Kabelsalat
2006-06-07, 01:15:41
Hallo,
Ich stehe momentan mit dem Delphi-Debugger ein wenig auf Kriegsfuß:
-> Bei beinahe jedem Schritt, den ich im Debugger vornehme quitiert Delphi mit folgender Meldung: Benachrichtigung über Debugger-Problem - In Projekt [...] trat ein Problem mit folgender Meldung auf: 'access violation at <address>: access of address <address>'. Prozess angehalten. Mit einzelne Anweisung oder Start fortsetzen.
Nun kann ich mit der Meldung rein garnichts anfangen, außerdem kann sie eigentlich garnicht mit Programmierfehlern meinerseits in Verbindung stehen, da sie nach nahezu jedem Schritt, dem ich im Debugger vollziehe erscheint - Debuggen macht so definitiv keinen Spaß, da ich das Fenster jedes mal wegklicken muss, bevor es weitergehen kann.
-> An einer Stelle kommt es tatsächlich zu einer Access Violation - leider für mich in keinster Weise nachvollziehbar:
constructor TValueToken.Create(token: string);
var
FormatSettings: TFormatSettings;
begin
if Length(token) = 0 then
raise EArgumentNullException.Create('token');
if IsKnownConstant(token) then Create(GetConstantValue(token))
else
begin
//. will be always used as seperator
FormatSettings.DecimalSeparator := '.';
// might fail
Create(StrToFloat(token, FormatSettings));
end;
end;
constructor TValueToken.Create(token: extended);
begin
_Value := token;
end;
Hier ein Auszug aus dem Stacktrace:
TValueToken.Create('2') //die IF-Abfrage ist false, somit wird der Konstruktor bis zum Kommentar might fail durchlaufen
TValueToken.Create(2)
Jetzt springt er wieder zurück - nun steht im Stacktrace aber
TValueToken.Create('') anstelle von TValueToken.Create('2'). Anschließend lande ich bei Verwendung von Einzelschritten im CPU-Fenster und es dauert nicht mehr lange bis die Access Violation auftritt - bloß warum? Was ist an dem Code falsch?
Danke für eure Hilfe
Kabelsalat
Ich stehe momentan mit dem Delphi-Debugger ein wenig auf Kriegsfuß:
-> Bei beinahe jedem Schritt, den ich im Debugger vornehme quitiert Delphi mit folgender Meldung: Benachrichtigung über Debugger-Problem - In Projekt [...] trat ein Problem mit folgender Meldung auf: 'access violation at <address>: access of address <address>'. Prozess angehalten. Mit einzelne Anweisung oder Start fortsetzen.
Nun kann ich mit der Meldung rein garnichts anfangen, außerdem kann sie eigentlich garnicht mit Programmierfehlern meinerseits in Verbindung stehen, da sie nach nahezu jedem Schritt, dem ich im Debugger vollziehe erscheint - Debuggen macht so definitiv keinen Spaß, da ich das Fenster jedes mal wegklicken muss, bevor es weitergehen kann.
-> An einer Stelle kommt es tatsächlich zu einer Access Violation - leider für mich in keinster Weise nachvollziehbar:
constructor TValueToken.Create(token: string);
var
FormatSettings: TFormatSettings;
begin
if Length(token) = 0 then
raise EArgumentNullException.Create('token');
if IsKnownConstant(token) then Create(GetConstantValue(token))
else
begin
//. will be always used as seperator
FormatSettings.DecimalSeparator := '.';
// might fail
Create(StrToFloat(token, FormatSettings));
end;
end;
constructor TValueToken.Create(token: extended);
begin
_Value := token;
end;
Hier ein Auszug aus dem Stacktrace:
TValueToken.Create('2') //die IF-Abfrage ist false, somit wird der Konstruktor bis zum Kommentar might fail durchlaufen
TValueToken.Create(2)
Jetzt springt er wieder zurück - nun steht im Stacktrace aber
TValueToken.Create('') anstelle von TValueToken.Create('2'). Anschließend lande ich bei Verwendung von Einzelschritten im CPU-Fenster und es dauert nicht mehr lange bis die Access Violation auftritt - bloß warum? Was ist an dem Code falsch?
Danke für eure Hilfe
Kabelsalat