Sie sind hier : Homepage →  und hier lauter alte Storys→  Delphi - BDE

Wie verplempere ich 5 ganze Arbeitstage ?

Die Antwort ist ganz einfach. Man nehme ein neues Mainboard (oder sogar das Alte) und erweitere den Hauptspeicher von 512 MB auf 2 Gigabyte. Das bringt bei der Bearbeitung von Fotos aus der Digitalkamera einen erheblichen Geschwindigkeitsgewinn.

 

Was war der Hintergrund ? Bisher haben wir immer alle Fotos mit der Sony Mavica FD73 gemacht. Solch ein JPG-Bild (auf Diskette) war von 40KB bis 90KB groß und 20 Bilder im Corel-Photopaint 10 oder Adobe-Photoshop 5 waren bei 512MB RAM immer noch vertretbar. Jetzt haben wir eine neue Kodak Z650, bei der die kleinste Kompressionsgröße irgendwo zwischen 300KB und 1MB pro Bild liegt. Bei 20 Bildern am Stück kommt eine 512MB Kiste ins Schleudern bzw. ins "Swappen". Also 2 Giga sind schon toll und fix ist das alles, einfach super.

Leider leider hat die Sache einen Haken.

Auf dieser W2K Station laufen alle meine Programme (etwas über 50) für das Firmengeschäft. Zum Spielen habe ich noch eine zweite Workstation in der Hifi Höhle unterm Dach. Und alle Daten wohnen auf 2 Servern, einem Netware 4.11 mit insgesamt 420 Gigabyte Raid (2 Disk Arrays) und einem WIN NT 4.0 (MSSQL 7.0 und Exchange 5.5) mit einem 38 Gig RAID.

 

Alles lief vorerst prima mit den 2Giga RAM und ich konnte in Producalc 32 (meinem Rechnungswesen), einer Delphi 3 Anwendung, Kunden, Lieferscheine und Rechnungen eingeben.

 

Nur Drucken, das konnte ich nicht mehr. Und das habe ich natürlich viel zu spät gemerkt. Doch was nutzen Rechnungen, die aus dem System nicht mehr raus kommen ? Dann habe ich angefangen, zu suchen, denn alles, aber auch alles Andere ging toll. Also die BDE überprüft und den ODBC Treiber. Doch daran hatte ich ja gar nichts verändert, tortzdem geprüft. Dann eine SQL Datenbank- Überprüfung angekurbelt und viels andere mehr, auch nichts.

 

Ich hatte am Ende sogar einen zweiten Compaq Server mit der Datensicherung von vor 2 Monaten aufgesetzt, vergeblich. Dann war der Spezialist (ein langjähriger Freund von mir) für diese Software eine halbe Nacht bei mir und wir haben gemeinsam nach dem Wurm gesucht. Wir hatten sogar WIN 2000 völlig neu aufgesetzt. Vergeblich, es war wie verhext.

Borland hat in Delphi oder in der BDE einen Bug.

Der Fehler zeigte sich natürlich nicht im Druck- programm, warum auch, es wäre zu einfach gewesen. Es ging einfach nicht, es wurde kein Drucker mehr angezeigt, obwohl alle Drucker und Reports korrekt konfiguriert waren. Ganz wenige Druckvorgänge zeigten irgendwann diese Maske rechts im Bild an.(Einfach drauf klicken)

Und mit diesem String

"Die Kapazität des Entscheidungswürfels ist erschöpft."

bin in dann in Google eingestiegen.

Und wirklich, einer, und auch nur einer hatte einen Notebook mit einer Delphi Anwendung auf 1,5 Gig hochgerüstet und dieser Fehler kam. Dann hatten sie die überzähligen RAM Streifen wieder raus genommen und er war weg, der "SCHEIß"-Fehler. So ein Schmarren. Hat das keiner geprüft bei Borland ?

Alles in Allem 5 ganze Tage im Eimer oder am A....

So etwas hatte ich in den letzten 20 Jahren noch nicht. Darum jetzt zur Bestandsaufnahme. Also was haben wir hier am Laufen :

 

 

  • WIN 2000 Professional 5.0.2195 SP4 (Build 2195)
  • Athlon 64 3000+ Venice Kern mit 1.800 MHz
  • MSI Mainboard K8T Neo2-f mit zwei 1Giga RAM Streifen
  • Realtek Chip RTL8169/8110 mit SPX/IPX und IP
  • Netware WIN NT/W2K Netzwerkclient 4.91 SP2
  • SQL Server Treiber 3.70.09.61 für den MSSQL 7.0 Server
  • ODBC Treiber MSSQL 5.0
  • BDE Treiber Version 5.1.1
  • Producalc 32 in Kooperation mit den Agora und Integra Modulen
  • Die Anwendung ist in Delphi 3 geschrieben.

 

 

Wie haben wir das Problem gelöst :

"Gewußt wie" hätte es ganze 5 Minuten gedauert. Das ist der fatale Nachgeschmack der ganzen Operation. Also Delphi oder die BDE haben ein Memory Leak. Mit "zuviel" Speicher (also mehr als 1 Gigabyte RAM ) überschreibt Delphi unerlaubt wichtige Systemteile.

 

Für WIN NT4.0 und WIN 2000 gibt es in der BOOT.INI eine Option (von vielen), mit der man dem jeweils startenden Windows sagen kann, wieviel Speicher es bitte schön zu kennen und zu benutzen habe. Also ganz einfach. Das Suchen in Google hätte auch deutlich verkürzt werden können, wenn man genau weiß, wonach man sucht. Irgendwo stand es nach vielem dummen BlaBla in einem Forum. man schaue in die "boot.ini Optionen", das ist dann auch der Suchbegriff für Google. Und siehe, es ist wirklich ganz einfach.

 

Jetzt habe ich mir testweise mehrere Boot-Optionen gemacht und der Reihe nach ausprobiert und es funktioniert.

 

Hier die Beispiel Konfiguration

 

[boot loader]

timeout=99

default=multi(0)disk(0)rdisk(0)partition(4)\WINNT

[operating systems]

multi(0)disk(0)rdisk(0)partition(4)\WINNT="Windows 2000 mit 2 Giga" /fastdetect

multi(0)disk(0)rdisk(0)partition(4)\WINNT="Windows 2000 mit 1 Giga" /fastdetect /MAXMEM:1024

multi(0)disk(0)rdisk(0)partition(4)\WINNT="Windows 2000 mit 512MB" /fastdetect /MAXMEM:512

multi(0)disk(0)rdisk(0)partition(4)\WINNT="Windows 2000 mit Debug Treiber Info" /fastdetect /SOS

multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows 2000 auf D: (Hilfsversion)" /fastdetect

C:\="Windows 98 ist gelöscht - nur noch DOS"

Ob ich mich geärgert habe ?

Na raten Sie mal. Jetzt rennt sie wieder, meine Workstation, schneller als je zuvor und wunderschön und eigentlich leidlich stabil. Ich muß halt beim Umstieg ins Rechnungswesen neu starten und nur 1 Giga RAM auswählen, eine ziemlich dämliche Lösung

 

Nach oben

Nachtrag wegen der Faulheit :

 

Die BOOT.INI ist unter Windows 2000 folgendermaßen aufgebaut:

 

  • [boot loader] - Infos für Autostart.
  • timeout=30 - Wartezeit bis zum automatischen Start
  • default=multi(0)disk(0)rdisk(0)partition(2)WINNT - Betriebssystem, das automatisch gestartet werden soll.
  • [operating system]- Das Bootmenü zur Auswahl.
  • multi(0)disk(0)rdisk(0)partition(2)WINNT="Microsoft Windows 2000 Professional /fastdetect "
  • D:="Windows" - weiteres Betriebssystem (nur wenn z.B. Windows 95/98/ME parallel installiert ist!).

 

 

Die Begriffe bei [operating system]:

 

  • multi(0) - IDE-Festplatten bzw. SCSI-Controller mit BIOS.
  • scsi - SCSI-Controller ohne BIOS.
  • rdisk(0) - SCSI-LUN-Nummer der entsprechenden Festplatte.
  • disk(0) - Nummer des SCSI-Busses.
  • partition(1) - Nummer der Partition, auf der sich das BS befindet, es wird bei 1 angefangen zu zählen.
  • signature(8b467c12) - Diesen Wert gibt es ab Windows 2000 und wird hinzugefügt, wenn einer der folgenden Bedingungen zutrifft:

 

 

* Die Partition, auf der Sie Windows 2000 installiert haben ist grösser als 7,8 GByte.

* Der Startzylinder liegt über 1024 so das für das Booten nicht die BIOS Funktion INT13 benutzt werden kann.

* Sie haben Windows 2000 auf einer SCSI-Festplatte installiert, die an einen SCSI-Controller hängt, wo das BIOS ausgeschaltet wurde. Auch hier kann dann nicht die BIOS-Funktion INT13 zum Booten benutzt werden.

 

Parameter:

 

  • /BASEVIDEO - System verwendet den Standard VGA-Treiber.
  • /CRASHDEBUG - Automatische Wiederherstellung des Systems.
  • /NOSERIALMICE - Deaktiviert die Erkennung einer seriellen Maus an der oder den angegebenen Schnittstellen. Diese Einstellung wird verwendet, wenn Windows NT eine Komponente an dieser Schnittstelle wie z.B. ein Modem für eine Maus hält. Angabe: [COMx oder COMx,y,z]
  • /DEBUG - Ein externer (Kernel-)Debugger ist generell "aktiv". NT lässt sich von dort aus unterbrechen. Optional /DEBUGPORT=COMx und /BAUDRATE=y für den dafür benutzen seriellen Port.
  • /NODEBUG - Dadurch werden keine DEBUG-Informationen überwacht. Da das Überwachen sehr aufwendig ist und nur Entwicklern von Bedeutung ist, kann man damit das System schneller machen.
  • /MAXMEM:n - Gibt an, wie viel Hauptspeicher NT maximal verwenden soll.
  • /SOS - Zeigt die Treiber an, die während des Startens von NT geladen werden.
  • /SCSIORDINAL:n - Wird verwendet, um zwei identische SCSI-Controller voneinander zu unterscheiden. Der Wert sollte beim zweiten SCSI-Controller auf 1 gesetzt werden.
  • /WIN95[DOS] - Nur sinnvoll bei einer DOS-,Windows-95- und NT-Parallelinstallation: Ermöglicht die Auswahl des zu ladenden Betriebssystems aus dem NT-Loader heraus. Der Loader übernimmt dann das Umbenennen der DOS-Dateien (io.sys, msdos.sys, command.com, config.sys und autoexec.bat), was ansonsten Windows95 übernimmt, wenn beim Starten F4 oder F8 gedrückt wird.

 

 

Beispiel:

 

          * C:BOOTSECT.W95="Microsoft Windows 95" /WIN95

          * C:BOOTSECT.W95="MS DOS 6.22" /WIN95DOS

          * multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows NT Workstation 4.0"

 

 

  • /ONECPU - Startet Mehrprozessorsysteme mit EINER CPU, alle anderen werden ignoriert.
  • /NUMPROC=n - Startet NT mit der angegebenen Zahl von Prozessoren (Bei einem 4 Prozessor System, würde NT bei /NUMPROC=2 nur mit 2 Prozessoren arbeiten)
  • /CLKLVL - Der Multiprozessor x86 (HALMPS.DLL) wird für eine gepufferte Systemuhr konfiguriert.
  • /BREAK - Damit wird eingestellt, das die HAL an einem bestimmten "Breakpoint" beim laden stehenbleibt. NT wartet nun an diesen Punkt, bis eine Debuggingverbindung hergestellt wurde und setzt dann den Start weiter fort. Wird diese Option verwendet, ohne das auch der Schalter /DEBUG gesetzt wurde, bleibt NT mit einem "BLUE Screen" stehen.
  • /BURNMEMORY=n - Mit den Wert wird in MByte angegeben wieviel Speicher NT nicht beachten soll, entgegengesetzt zum Schalter /MAXMEM der den zu verwendenden Speicher angibt. Bei der Angabe von /BURNMEMORY = 84 würde NT 84 MB vom gesamten Arbeitsspeicher als unbrauchbar weglassen.

 

 

Die nachfolgenden Parameter sind aus der Win 2000 Build 2195.

 

 

  • /NOGUIBOOT - Wenn Sie diesen Schalter setzen, wird nicht mehr der Grafiktreiber geladen, der dafür notwendig ist, den Bootvorgang grafisch darzustellen. Dieser Treiber wird zur Anzeige des Bootvorgangs verwendet und um bei einem "Blue Screen" die Informationen auszudrucken.
  • /FASTDETECT - Bei einer Installation von Windows NT 4.0 und Windows 2000 wird eine unterschiedliche Arbeitsweise von NTDETECT verlangt. Bei Windows NT 4.0 wurde die Erkennung von Parallel- und Seriellen Ports noch durch NTDETECT durchgeführt, ab Windows 2000 gibt es dafür einen speziellen PLUG and Play Treiber, der dafür verantwortlich ist. Wird dieser Schalter gesetzt, wird die Erkennung über NTDETECT ausgeschaltet.
  • /SAFEBOOT: - Diesen Schalter sollten Sie nicht selber setzen. Wenn Sie die Taste F8 beim Booten drücken, werden diese Schalter automatisch von Windows NT gesetzt.

 

 

Nach oben

Zurück zur Startseite ----- © 2009 / 2016 - Copyright by Dipl. Ing. Gert Redlich - Zum Telefon - - - - NEU : Zum Flohmarkt