Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler in Anwendung?!? Windows 2000 Pro (https://www.delphipraxis.net/670-fehler-anwendung-windows-2000-pro.html)

towi 21. Aug 2002 13:40


Fehler in Anwendung?!? Windows 2000 Pro
 
Hallo,

beim Start meines Programmes unter Windows 2000, erhalte ich die Fehlermeldung "Die Anweisung in"0x00403f57
" verweist auf Speicher in "0x696e6f70". Der "read" konnte nicht auf dem Speicher durchgeführt werden.".
Kann mir da jemand weiterhelfen?
Servus! Towi

Daniel 21. Aug 2002 13:55

Es wäre mehr als hilfreich, wenn Du uns nähere Infos über Dein Programm geben würdest oder auch, welche Massnahmen Du bereits ergriffen hast, um dem Fehler auf die Schliche zu kommen. Ich tippe auf ein nicht initialisiertes Objekt, auf das Du da zugreifen willst.

Die erste Massnahme besteht i.A. darin, aus der Delphi IDE heraus mit F7 oder F8 per Einzelschritt durch die Programmzeilen zu laufen, um zu sehen, bei welcher Anweisung der Fehler auftritt.
Führt dies nicht zum Erfolg, weil vor dem Auftreten des Fehlers einfach zu viele Anweisungen abgearbeitet werden, so greife ich immer zu grosszügig im relevanten Code verteilten Messageboxen. Das ist nicht besonders elegant, hilft aber, einen Fehler schnell einzukreisen.
Man bestückt den Code also in regelmässigen Abständen mit dem Aufruf MessageBox("xxx") und merkt sich dann beim Programmablauf, nach welcher Messagebox der Fehler auftrat. Schon hat man in etwa die Fehlerquelle.

Wenn Du die Fehlerquelle dann eingekreist hast, und dennoch nicht weiter weist, dann kannst Du ja -wenn Du magst- die betreffende Stelle hier in einem Beitrag hinterlegen und dann schauen wir alle gemeinsam drauf :wink:.


Grüße,
Daniel

Luckie 21. Aug 2002 14:01

Wenn man eine Vermutung hat, dann kannman ch den Cursor in die Prozedur stellen und F4 drücken. Dann bleibt er beim Ausführen an der Stelle stehen und du kannst ab da mit F7 weitermachen.

Wenn irgend etwas fehlschlägt hilft manchmal auch ein GetLastError:
Code:
procedure DisplayErrorMsg(hWnd: THandle);
var
   szBuffer: array[0..255] of Char;
begin
   FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, GetLastError(), 0, szBuffer,
     sizeof(szBuffer), nil);
   MessageBox(hWnd, szBuffer, 'Fehler', MB_ICONSTOP);
end;

Daniel 21. Aug 2002 14:04

@Luckie: Stimmt natürlich. :!:
Hehehe. Bin von diesen herkömmlichen Methoden im Laufe der Zeit abgewichen, da diese es nicht gestatten, auch über DLLs hinweg einen Fehler zu verfolgen. :nerd:


Grüße,
Daniel

Christian Seehase 21. Aug 2002 14:48

Moin Zusammen,

und wer die VCL benutzt kann sich auch mit dieser Zeile behelfen:

Code:
ShowMessage(SysErrorMessage(GetLastError)));

towi 22. Aug 2002 10:58

Hallo,

vielen dank für die vielen Beiträge.
Also, dieser Effekt tritt nur unter Win2000 (Firmenrechner) auf. Leider ist z.Z. nirgendwo anders Win2000 installiert.
Das Programm habe ich erfolgreich mit WinXP Pro und älteren Win-Versionen (95/98/98SE) getestet. Dort ist der Fehler nie aufgetreten.
Als Programmierumgebung verwende ich Win98SE. Das Programm erstellt beim ersten Aufruf einen Registry-Eintrag zum Speichern der Startanzahl, sowie des Startdatums. Vermutlich, liegt darin das Problem, denn ohne Speichern in der Registry funktioniert alles ohne Fehler!
Servus!
Torsten

Christian Seehase 22. Aug 2002 11:15

Moin Torsten,

dann wäre es ganz hilfreich, wenn Du mal den Codeabschnitt mit dem Eintragen der Daten in die Registry vorzeigst.
Auch wenn ich mir im Moment nicht so unmittelbar erklären kann, wieso der Fehler nur unter 2000 aber nicht unter XP Pro auftritt.

towi 22. Aug 2002 12:56

Hallo Christian,

vielen Dank für Deine Antwort.
Ich benutze Win2000 Pro inkl. ServicePack2 und mit SP3 zusätzlich.
Nachdem ich SP3 wieder deinstalliert habe (aus anderen Gründen), funktioniert mein Prog wieder Perfekt.
Also, liegt es anscheinend am SP3.
Servus!
Torsten :coder:

Luckie 22. Aug 2002 13:53

In welchem Schlüssel erstellt du die Einträge?

In HKLM?

Da hast du nur als Admin Schreibrechte und wenn du auf dem XP-Rechner Admin bist geht es. Auf demm Firmen-Rechner bist du wohl kein Admin und dann geht es nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz