![]() |
Wie kann ich finden wo eine Variable geändert wird?
Die Frage kam bestimmt schon 10.000 mal. Aber ich schaffe es nicht die Suche passend einzugrenzen.
Ich habe eine Variable
Delphi-Quellcode:
. Wie kann ich im Code-Editor herausfinden wo diese Variable verändert wird (per Zuweisung oder als var-Parameter übergeben)?
meineZahl: Integer
|
AW: Wie kann ich finden wo eine Variable geändert wird?
Zitat:
für nicht Var Parameter -> Property daraus machen Designtime oder Runtime? Timer-> meineZahl <> lastMeineZahl... Bisschen mehr Futter :glaskugel: |
AW: Wie kann ich finden wo eine Variable geändert wird?
Moin,
an dem Punkt ab dem Du vermutest das die Änderung stattfindet einen Haltepunkt definieren, die Variable in die Überwachtenausdrücke übernehmen und dann wenn das Programm bei der Ausführung am Haltepunkt stoppt, mit F7 Schritt und Schritt durch den Code wandern. Als erstes kannst Du das auch mit F8 machen und wenn Du die Procedure gefunden hast in der die Veränderung stattfindet, einen Haltepunkt in die Procedure (den ersten löschen) und mit F7 weiter machen. Gruß Heiko |
AW: Wie kann ich finden wo eine Variable geändert wird?
Danke für die Antworten. Ich möchte nicht debuggen und schauen ob sich zur Laufzeit vielleicht mal etwas ändert.
Ich möchte zur "Designzeit" die Stellen finden wo eine Variable geändert wird. |
AW: Wie kann ich finden wo eine Variable geändert wird?
suche mit "meineVariable := "
sollte hier doch ausreichen - oder denke ich zu einfach? |
AW: Wie kann ich finden wo eine Variable geändert wird?
Ja. Denn Dinge wie
Delphi-Quellcode:
findet man damit nicht. Von Zeigern ganz zu schweigen, aber die lassen wir mal außen vor ;-)
verdoppeleWert(meineVariable);
[...] procedure verdoppeleWert(var wert: Integer); begin wert := wert * 2; end; |
AW: Wie kann ich finden wo eine Variable geändert wird?
Hallo,
dann benenn die Variable um, dann findet der Compiler die Stellen. Zum Debuggen (jaja, willst du nicht): Ich mache aus der Variable ein Property, dann kannst du aber die aber nicht mit var-Parametern arbeiten. Heiko |
AW: Wie kann ich finden wo eine Variable geändert wird?
Ein
Delphi-Quellcode:
hätte schon gereicht als Gegenbeispiel. ;)
Inc(meineVariable)
Und was wäre mit
Delphi-Quellcode:
Zählt das für dich als "Variable geändert" oder nicht? D.h. suchst du Schreibzugriffe oder tatsächliche Wertänderungen?
Foo(meineVariable);
procedure Foo(var wert: Integer); begin wert := wert; end; Egal wie die Frage ausfällt, ich kann dir da nicht weiterhelfen. Mir fällt spontan nur ein die Refactoring-Funktionen zu benutzen ("meineVariable" vom Refactoring umbenennen lassen und alle Fundstellen manuell überprüfen). |
AW: Wie kann ich finden wo eine Variable geändert wird?
Zuweisungen finden aber nunmal nur zur Laufzeit statt. Entweder du suchst im Code nach deiner Variablen, oder suchst zur Laufzeit beim Debuggen. Wenn du sie mit dem Suchbegriff "MyVar :=" nicht findest, suchst du eben mit "var MyVar" weiter oder suchst gleich nur nach "MyVar". Ansonsten gibt es dafür keinen anderen "Trick" oder ein spezielles Feature in der IDE, zumindest nicht in meiner :-D
|
AW: Wie kann ich finden wo eine Variable geändert wird?
Ist vielleicht zu einfach, aber ich hätte jetzt einfach über das Kontext-Menü Referenzen suchen (bzw. Ctrl-Shift-Enter) alle Stellen auflisten lassen. Dort sieht man Zuweisungen sehr schnell - nur bei Var-Parameten muss man halt genauer hinschauen.
Alternativ kann ich auch den ![]() |
AW: Wie kann ich finden wo eine Variable geändert wird?
Mein Problem war dass es heute sehr viele Stellen waren. Die alle von Hand durchzugehen macht keinen Spaß. Wenn die IDE so etwas gehabt hätte, hätte sie direkt 95% der Benutzungen herausfiltern können da es nur "Lesezugriffe" waren.
Hast du ein Bild zum Pascal Analyzer wie das im Endeffekt aussieht? Im ![]() |
AW: Wie kann ich finden wo eine Variable geändert wird?
Das lässt sich sehr einfach machen:
Die Variable umbenennen in einen eindeutigen Namen, dann eine Funktion mit dem ursprünglichen Namen erstellen. An allen Schreibzugriffen wird es nun einen Fehler geben, dort ersetzen wir dann durch die umbenannte Variable. Wenn dann alles kompiliert, löschen wir die zusätzliche Funktion und benennen die Variable wieder zurück. Nun nur noch nach dem umbenannten Variablennamen suchen und man hat alle Schreibstellen. Dann noch ein Hinweis. Das ist hier zwar nicht gesucht, aber da zwei etwas abenteuerliche Wege genannt wurden zur Laufzeit eine Änderung einer Variable mitzubekommen, möchte ich das für spätere Leser des Threads einmal noch erwähnen: Wenn man im Debugger angehalten hat, über der Liste der Haltepunkte auf Haltepunkt hinzufügen und dabei Datenhaltepunkt auswählen. Dort dann den Namen der Variablen angeben. Daraufhin hält das Programm automatisch an sobald die Variable einen Wert zugewiesen bekommt. |
AW: Wie kann ich finden wo eine Variable geändert wird?
Zitat:
Zitat:
Ein Doppelclick auf den Eintrag im Report positioniert übrigens den Delphi-Editor an eben diese Stelle. |
AW: Wie kann ich finden wo eine Variable geändert wird?
Schön wäre es, wenn man die Variable in ein Property umwandeln und einen Setter definieren könnte.
Haltepunkt da rein und warten. :angle: Datenhaltepunkte -> ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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 by Thomas Breitkreuz