![]() |
Auswertung Lokale Variablen unvollständig
Ich habe hier folgenden Code:
Delphi-Quellcode:
Beim Debuggen erscheinen von den 6 deklarierten Variablen nur 4, "S" und "MD5" fehlen. Bei einem Auswertungsversuch erscheint "E2003 Undeklarierter Bezeichner: 'MD5'". Mache ich die beiden Variablen global (auf Formebene), funktioniert es. Delphi CE 10.4. Was ist hier los?
procedure TForm3.Button1Click(Sender: TObject);
var TaskGroup: IOmniTaskGroup; S : TSearchRec; MD5 : string; OTC : IOmniTaskControl; Gef : integer; HashMD5: THashMD5; begin ... |
AW: Auswertung Lokale Variablen unvollständig
Werden die im folgenden Code auch verwendet?
Sherlock |
AW: Auswertung Lokale Variablen unvollständig
Die Idee kam mir auch, weswegen ich ein
Delphi-Quellcode:
eingefügt habe. (Ich versuche gerade, mich in die OTL einzuarbeiten, weswegen der Code nichts Sinnvolles tut.)
If MD5 = '' then exit;
Ich habe nun nochmal genau nachgeguckt und leider ist es tatsächlich so, dass dieses
Delphi-Quellcode:
keine Konsequenzen hat. Deine Annahme ist also richtig, vielen Dank.
exit
Wo wir gerade dabei sind: Ich verwende gern Unterprozeduren, und früher klappte da die Auswertung der Prozedur-Variablen auch in den Unterprozeduren. Das scheint weg zu sein. Kann man da etwas machen? |
AW: Auswertung Lokale Variablen unvollständig
Der Debugger ist bis heute leider zu blöd lokale Variablen anzuzeigen die bspw. auf dem Heap liegen weil sie in einer Closure/Anonymen Methode verwendet werden. Du kannst den Wert nur sehen wenn du entweder auf einen Haltepunkt läufst der in der Closure liegt, oder du fügst noch eine lokale Variable hinzu welche eine Kopie des Wertes erhält.
|
AW: Auswertung Lokale Variablen unvollständig
In früheren Versionen von Delphi klappte das aber einwandfrei.
|
AW: Auswertung Lokale Variablen unvollständig
Kannst du eine vollstände Prozedur posten? Ich bin hauptsächlich noch mit 10.0 unterwegs, und da ist es auch so. Ich kenne es eigentlich nur so.
|
AW: Auswertung Lokale Variablen unvollständig
In diesem Beispiel klappt es sowohl in der lokalen Prozedur ShowValues als auch in der anonymen im TTast.Run mit D11.1 wenn man mit der Maus rüber geht oder diese im den überwachten Ausdrücken hinzufügt.
Delphi-Quellcode:
Aber mit 10.4.2 sind S1 usw. nur im TTask.Run sichtbar.
procedure TForm1.bt1Click(Sender: TObject);
var S1, S2: string; B: Byte; I: Integer; procedure ShowValues; var S: string; begin S := S1 + #32 + S2 + #32 + B.ToString + #32 + I.ToString; OutputDebugString(PChar(S)); end; begin S1 := 'S1'; S2 := 'S2'; B := 255; I := B *100; ShowValues; TTask.Run( procedure var S: string; begin S := S1 + #32 + S2 + #32 + B.ToString + #32 + I.ToString; OutputDebugString(PChar(S)); end); |
AW: Auswertung Lokale Variablen unvollständig
Ich habe mal rasch diese Prozedur rausgehauen:
Delphi-Quellcode:
... aber was passiert? Die Variablen werden in der Unterprozedur ausgewertet. Heute ist wohl nicht mein Frage-Tag. Ich hatte gestern eine Prozedur, wo es nicht klappte, wenn ich wieder auf die stoße, dann melde ich mich wieder.
procedure TForm3.Test;
var FS:TFileStream; Datname:string; Dateigröße:Cardinal; //------------------------------------------------------------------------------------- function LeseDateiInStream:Boolean; begin FS := TFileStream.Create(Datname,fmOpenRead or fmShareDenyWrite); Dateigröße := FS.Size; Result := (Dateigröße > 0); end; //------------------------------------------------------------------------------------- begin Datname := 'C:\Temp\Test.txt'; If not LeseDateiInStream then exit; end; |
AW: Auswertung Lokale Variablen unvollständig
Zitat:
|
AW: Auswertung Lokale Variablen unvollständig
Hallo,
ist die Optimierung aus? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 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