Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Auswertung Lokale Variablen unvollständig (https://www.delphipraxis.net/210400-auswertung-lokale-variablen-unvollstaendig.html)

Benmik 19. Apr 2022 13:26

Auswertung Lokale Variablen unvollständig
 
Ich habe hier folgenden Code:
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var TaskGroup: IOmniTaskGroup;
    S   : TSearchRec;
    MD5  : string;
    OTC : IOmniTaskControl;
    Gef : integer;
    HashMD5: THashMD5;
begin
...
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?

Sherlock 19. Apr 2022 13:55

AW: Auswertung Lokale Variablen unvollständig
 
Werden die im folgenden Code auch verwendet?

Sherlock

Benmik 19. Apr 2022 14:23

AW: Auswertung Lokale Variablen unvollständig
 
Die Idee kam mir auch, weswegen ich ein
Delphi-Quellcode:
If MD5 = '' then exit;
eingefügt habe. (Ich versuche gerade, mich in die OTL einzuarbeiten, weswegen der Code nichts Sinnvolles tut.)
Ich habe nun nochmal genau nachgeguckt und leider ist es tatsächlich so, dass dieses
Delphi-Quellcode:
exit
keine Konsequenzen hat. Deine Annahme ist also richtig, vielen Dank.

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?

Der schöne Günther 19. Apr 2022 14:44

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.

Benmik 19. Apr 2022 14:57

AW: Auswertung Lokale Variablen unvollständig
 
In früheren Versionen von Delphi klappte das aber einwandfrei.

Der schöne Günther 19. Apr 2022 15:10

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.

BerndS 19. Apr 2022 15:16

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:
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);
Aber mit 10.4.2 sind S1 usw. nur im TTask.Run sichtbar.

Benmik 19. Apr 2022 15:49

AW: Auswertung Lokale Variablen unvollständig
 
Ich habe mal rasch diese Prozedur rausgehauen:
Delphi-Quellcode:
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;
... 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.

Der schöne Günther 19. Apr 2022 17:08

AW: Auswertung Lokale Variablen unvollständig
 
Zitat:

Zitat von BerndS (Beitrag 1504758)
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.

Das ist ja toll, das wäre ein weiterer Grund für mich endlich mal upzudaten 😎

hoika 19. Apr 2022 19:14

AW: Auswertung Lokale Variablen unvollständig
 
Hallo,
ist die Optimierung aus?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 Uhr.
Seite 1 von 2  1 2      

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