Hallo an alle.
Ich habe seit einiger Zeit ein Problem, bei dem ich nicht ganz weiterkomme.<br>
Um ISAM-Dateien aus einer früheren Dateistruktur (DOS-Programmiersprache) in eine neue Windows-Struktur umzusetzen,<br>
muss ich diverse DOS-Aufrufe mit CreateProcess und Command.Com /C verwenden.<br><br>
Dabei erzeuge ich je ISAM-Datei mehrere Aufrufe:<br>
- Neuaufbau der Index-Datei im alten Dos-Format<br>
- Kontrollermittlung der Datei-Struktur<br>
- Konvertierung der Index-Datei in neues Format<br>
<br>
Beim Ablauf des Programmes kommt es dann zu dem Effekt, das der verfügbare Arbeitsspeicher konsequent kleiner wird. <br>
Je nach verwendetem Betriebssystem Win98/WinNT ist der Effekt aber sehr unterschiedlich.<br>
Unter Win98 kann das Programm weit über 2000 Dateien konvertieren, ohne abzustürzen. Eine Verringerung des Arbeitsspeichers passiert aber trotzdem.<br>Das heisst ein Absturz würde bei einer höheren Zahl von Dateien auch passieren.<br>
Unter WinNT stürzt das Programm regelmässig bei einem Wert von 1300-1400 Dateien (also etwa 3900-4200 CreateProcess-Aufrufe) ab, <br>
da dann Betriebssystem-Meldungen kommen, das zb. Kernel-Dll's nicht mehr nachgeladen werden können (mangelnder Arbeitsspeicher).<br>
<br>
Bei den Tests entstand für mich der Eindruck, das der Arbeitsspeicher der bei CreateProcess für den DOS-Task reserviert wird, <br>
nicht sofort nach Beendigung des Processes freigegeben wird und sich so konsequent eine Auslastung der Systemkapazitäten aufbaut.<br>
Sobald aber mein Programm beendet wird, sind die Kapazitäten sofort wieder freigegeben.<br>Auch eine Auslagerung des DOS-Aufrufs in eine eigene DLL oder EXE führte nicht zu einem stabileren Programmablauf bzw. Arbeitsspeicherverhalten.<br>
<br>
Als zweites hätte ich noch die Frage ob mir jemand erklären kann, warum die Funktion zur Ermittlung des verfügbaren Arbeitsspeichers mir unter WIN98 andere Werte mitteilt als unter Windows NT.<br>
z.b Windows 98 ca. 35.000 kb / Win NT 67.000 kb<br>
<br>
Für eine Hilfe bei diesem Problem wäre ich sehr dankbar.
Ich habe seit einiger Zeit ein Problem, bei dem ich nicht ganz weiterkomme.<br>
Um ISAM-Dateien aus einer früheren Dateistruktur (DOS-Programmiersprache) in eine neue Windows-Struktur umzusetzen,<br>
muss ich diverse DOS-Aufrufe mit CreateProcess und Command.Com /C verwenden.<br><br>
Dabei erzeuge ich je ISAM-Datei mehrere Aufrufe:<br>
- Neuaufbau der Index-Datei im alten Dos-Format<br>
- Kontrollermittlung der Datei-Struktur<br>
- Konvertierung der Index-Datei in neues Format<br>
<br>
Beim Ablauf des Programmes kommt es dann zu dem Effekt, das der verfügbare Arbeitsspeicher konsequent kleiner wird. <br>
Je nach verwendetem Betriebssystem Win98/WinNT ist der Effekt aber sehr unterschiedlich.<br>
Unter Win98 kann das Programm weit über 2000 Dateien konvertieren, ohne abzustürzen. Eine Verringerung des Arbeitsspeichers passiert aber trotzdem.<br>Das heisst ein Absturz würde bei einer höheren Zahl von Dateien auch passieren.<br>
Unter WinNT stürzt das Programm regelmässig bei einem Wert von 1300-1400 Dateien (also etwa 3900-4200 CreateProcess-Aufrufe) ab, <br>
da dann Betriebssystem-Meldungen kommen, das zb. Kernel-Dll's nicht mehr nachgeladen werden können (mangelnder Arbeitsspeicher).<br>
<br>
Bei den Tests entstand für mich der Eindruck, das der Arbeitsspeicher der bei CreateProcess für den DOS-Task reserviert wird, <br>
nicht sofort nach Beendigung des Processes freigegeben wird und sich so konsequent eine Auslastung der Systemkapazitäten aufbaut.<br>
Sobald aber mein Programm beendet wird, sind die Kapazitäten sofort wieder freigegeben.<br>Auch eine Auslagerung des DOS-Aufrufs in eine eigene DLL oder EXE führte nicht zu einem stabileren Programmablauf bzw. Arbeitsspeicherverhalten.<br>
<br>
Als zweites hätte ich noch die Frage ob mir jemand erklären kann, warum die Funktion zur Ermittlung des verfügbaren Arbeitsspeichers mir unter WIN98 andere Werte mitteilt als unter Windows NT.<br>
z.b Windows 98 ca. 35.000 kb / Win NT 67.000 kb<br>
<br>
Für eine Hilfe bei diesem Problem wäre ich sehr dankbar.