AW: Variable ist plötzlich anders
Delphi-Quellcode:
Vor dem eigentlichen Aufruf von
type
TUKunden = class(TForm) ..... private FKundennummer: string; procedure SetKundennummer(const AValue: string); public property Kundennummer read FKundennummer write SetKundennummer; end; implementation ..... procedure TUKunden.SetKundennummer(const AValue: string); begin FKundenummer := AValue; // BREAKPOINT HIER SETZEN end;
Delphi-Quellcode:
dem property Kundennummer den zu suchenden Wert zuweisen und es dann als Parameter mitgeben. Sollte irgendein Event oder Thread die Kundennummer einstweilen verändern, dann stehst Du beim Breakpoint und kannst den Callstack untersuchen.
FirstKundenSuchen
HTH (hope that helps) |
AW: Variable ist plötzlich anders
Wenn ein String-Paramerter innerhalb der Methode nicht verändert werden soll, vereinbart man den am besten als "const"-Paramter.
Delphi-Quellcode:
Für die Rückgabe kann man zwar "var"-Parameter verwenden, aber eigentlich sollten es hier "out"-Parameter sein.
FirstKundenSuchen(const KundenNummer: String{ ...})
. "var" bedeuted die Parameter müssen auch vor dem Aufruf sinnvoll belegt sein, da die vorherigen Werte intern benötigt werden. "out" den Parameter-Variablen muss vor dem Aufruf nichts zugewiesen werden. Die ganzen Rückgabewerte gehören doch zusammen und bilden ein fachliches Object. Warum dann nicht auch eine Klasse benutzen oder zumindst einen Record?
Delphi-Quellcode:
Deine Klasse heist "TUKunden" und hat direkten Zugriff auf alle internen Felder und Objekte.
type
TKundeRec = record Nummer, Name1, Name2, Strasse, Land, PLZ, Ort, Telefax, Email, Vertreter, RnEmail: String end; procedure TUKunden.FirstKundenSuchen(const KundenNummer: String; out Kunde: TKundeRec); {oder} function TUKunden.FirstKundenSuchen(const KundenNummer: String): TKundeRec; Die Variable "UKunden" ist vermutlich eine globale Variable die dich innerhalb der Klasse überhaupt nicht interessiert. Streich mal überall in der Methode "UKunden.", dann wird das etwas übersichlicher und eine Fehlerquelle ausgeschlossen. Hast du die Optimierung für das Compilieren angeschalten? Das sollte man nicht wenn man debuggen will. Das Programm läuft zwar normal, aber der Debugger zeigt dann nicht mehr richtig an. Vieleicht hast du auch mehrere Variablen die Kundennummer heißen. Eine lokal in der Methode und eine weitere in der Klasse. |
AW: Variable ist plötzlich anders
Zitat:
|
AW: Variable ist plötzlich anders
Zitat:
Hans |
AW: Variable ist plötzlich anders
Zitat:
Delphi-Quellcode:
[dcc32 Fehler] KundenUnit.pas(22): E2147 Eigenschaft 'Kundennummer' existiert nicht in Basisklasse :-(
property Kundennummer read FKundennummer write SetKundennummer;
Ich habe den Aufruf dann so geändert:
Delphi-Quellcode:
Ist jetzt zwar etwas krampfig - aber geht das dann so ??
procedure TUKunden.FirstKundenSuchen(KundenNummer: String; var KName1, KName2, KStrasse, KLand, KPLZ, KOrt, KTelefax, KEmail, KVertreter, KRnEmail: String);
begin FKundenNummer := KundenNummer 1Suche(KundenNummer: String; var KName1, KName2, KStrasse, KLand, KPLZ, KOrt, KTelefax, KEmail, KVertreter, KRnEmail: String); end; Hans |
AW: Variable ist plötzlich anders
Delphi-Quellcode:
bzgl: <- hier wird nach Kundennummer 12652 gesucht
if (KundenNummer = UKunden.KundenSpeicherSG.Cells[CKundenNr, i]) then [COLOR="Red"]// <- hier wird nach Kundennummer 12652 gesucht[/COLOR]
begin if (UKunden.KundenSpeicherSG.Cells[CKundenRNAnschrift, i] = (UKunden.KundenSpeicherSG.Cells[CKundenLfdNr, i])) then [COLOR="Red"]// -< und hier ist der Inhalt von KundenNummer plötzlich 14109[/COLOR] das verstehe ich ja noch, da du "Kundennummer" vergleichst bzgl: -< und hier ist der Inhalt von KundenNummer plötzlich das verstehe ich nicht. Wie kann "Kundenummer" in einer Zeile plötzlich einen anderen Wert haben, wenn du "Kundennummer" gar nicht vergleichst? |
AW: Variable ist plötzlich anders
Kann es sein, dass in der Basisklasse "KundenNummer" einen Getter hat, der den Inhalt verändert oder ist Kundennummer selbst eine procedure? Was passiert, wenn du in einer Routine einfach ein paarmal hintereinander "KundenNummer" abfragst, ohne noch was anderes zwischendrin zu machen, ändert sich dann der Rückgabewert auch?
|
AW: Variable ist plötzlich anders
Oder zum Test "Kundenummer" im Prozedurkopf einfach mal nach "AKundenNummer123" oder irgendeinen Quatsch umbenennen der definitiv nirgendwo anders existiert.
|
AW: Variable ist plötzlich anders
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Hans *So - heute gibt es keine Rückmeldung mehr - sonst bekomme ich Ärger mit meiner Regierung :-D |
AW: Variable ist plötzlich anders
Zitat:
Hans |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 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