Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   IntToStr liefert Exception (https://www.delphipraxis.net/156811-inttostr-liefert-exception.html)

peter_chen 15. Dez 2010 17:45

Delphi-Version: 2010

IntToStr liefert Exception
 
Hallo ihr Lieben,

Ich habe hier folgendes kleines Stückchen Code:

Delphi-Quellcode:
procedure TComThread.COMDebug(S: string);
var
  P: PChar;
  didWork: Boolean;
  aHandle: HWND;
  aTickCnt: Cardinal;
  aTimeStamp: Cardinal;
  S2: string;
begin
  try
    aTickCnt := GetTickCount;
    aTimeStamp := aTickCnt - PultStartTime;
    S := ' ms: ' + S;
    S2:= IntToStr(aTimeStamp);
    S := S2 + S;
//    getmem(P, length(S) + 1);
//    strPCopy(P, S);
//    aHandle := Self.Handle;
//    didWork := PostMessage(aHandle, WM_COMTHREAD, IDCOMDebug, LongInt(P));
//    didWork := PostMessage(FHandle, WM_COMTHREAD, IDCOMDebug, LongInt(P));
    TraceString('ComDebug:' + S);
//    if assigned(SLDebug) then
//      SLDebug.Add(inttostr(GetTickCount - PultStartTime) + ' ms: ' + S + ' ' + BoolToStr(didWork,true));
  except
    on ex:Exception do
    begin
      TraceString('ComDebugException:' + S);
      TraceString('ComDebugException:' + ex.Message);
    end;
  end;
end;
Wie ihr seht handelt es sich um eine Debugprozedur für eine COM-Schnittstelle, die bei mir eingebunden ist.Wie ihr seht, habe ich ein anderes Trace eingefügt und an den auskommentierten Zeilen erkennt ihr auch, dass ich schon ein wenig herumprobiert habe...
Das IntToStr liefert mir teilweise, also nicht immer, aber doch immer an den selben Stellen eine "Zugriffsverletzung bei Adresse 00402FEB in Modul 'mitPultComp.exe'. Schreiben von Adresse 0057001C" Woher kommt das? Und wie krieg ich das weg? :oops:

Als Umgebung verwende ich Delphi 2010.

Ich hoffe, ihr könnt mir irgendwie helfen?

Bummi 15. Dez 2010 18:28

AW: IntToStr liefert Exception
 
Kann es sein dass der Stack an anderer Stelle schon ins Rutschen gekommen ist und der Fehler mehr zufällig hier aufschlägt?
Wir hatten einmal einen solchen Fall durch eine unsauber implementierten stralloc > GetTempPath Routine die im Code an den unmöglichsten Stellen viel später zu unerklärbaren Fehlern führte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 Uhr.

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