![]() |
Delphi-Version: 10 Berlin
Variable ist plötzlich anders
Sorry - besser kann ich es bnicht beschreiben :-( Ich habe hier ein Stringgrid das einfach von oben nach unten durchgelaufen wird.
Wenn das Feld Kundennummer der übergebenen Kundennummer entspricht soll es, wenn zwei weitere Felder übereinstimmen die Daten ausgeben. Im Prinzip sehr einfach ... aber plötzlich ist die KundenNummer nach der gesucht wird eine andere:
Delphi-Quellcode:
In der Routine ändere ich nicht den Inhalt von KundenNummer.
procedure TUKunden.FirstKundenSuchen(KundenNummer: String; var KName1, KName2, KStrasse, KLand, KPLZ, KOrt, KTelefax, KEmail, KVertreter, KRnEmail: String);
var i: Integer; begin for i := 0 to UKunden.KundenSpeicherSG.RowCount -1 do begin 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] begin KName1 := UKunden.KundenSpeicherSG.Cells[CKundenName1, i]; KName2 := UKunden.KundenSpeicherSG.Cells[CKundenName2, i]; KStrasse := UKunden.KundenSpeicherSG.Cells[CKundenStr, i]; KLand := UKunden.KundenSpeicherSG.Cells[CKundenLand, i]; KPLZ := UKunden.KundenSpeicherSG.Cells[CKundenPLZ, i]; KOrt := UKunden.KundenSpeicherSG.Cells[CKundenOrt, i]; KTelefax := UKunden.KundenSpeicherSG.Cells[CKundenTelefax, i]; KEmail := UKunden.KundenSpeicherSG.Cells[CKundenEMail, i]; KVertreter := UKunden.KundenSpeicherSG.Cells[CKundenVertreter, i]; KRnEmail := UKunden.KundenSpeicherSG.Cells[CKundenRnEMail, i]; exit; end; end; end; KName1 := 'Keine Daten gefunden ! '; (* Kann eigentlich nicht vorkommen :-D *) end; Es wird auch keine andere Routine aufgerufen. Hinweise und Warnungen auf Laufzeitfehler sind eingeschaltet. Hier in ![]() Hans |
AW: Variable ist plötzlich anders
fehlen da nicht ein paar else ?
Delphi-Quellcode:
if (KundenNummer = UKunden.KundenSpeicherSG.Cells[CKundenNr, i]) then
[COLOR="Red"] end else begin ..... if (UKunden.KundenSpeicherSG.Cells[CKundenRNAnschrift, i] = (UKunden.KundenSpeicherSG.Cells[CKundenLfdNr, i])) then [COLOR="Red"] end else begin .... gruss |
AW: Variable ist plötzlich anders
Moin,
eigentlich ja nicht .... denn entweder er findet Daten (dann greift das Exit) oder er findet nicht und dann läuft er die Schleife komplett durch. Ich hab das ganze nochmal etwas verkürzt:
Delphi-Quellcode:
Wobei ... ioch glaube eigentlich nicht das es an dieser Routine liegt :-( Aber wo suchen ??
procedure IchBinKomisch(KundenNummer: String; var Rueckgabewert: String);
var i: Integer; begin for i := 0 to UKunden.KundenSpeicherSG.RowCount -1 do begin if (KundenNummer = StringGrid[1, i]) then begin if (StringGrid[2, i] = (StringGrid[3, i])) then begin Rueckgabewert := 'Gefunden'; exit; end; end; end; Rueckgabewert := 'Keine Daten gefunden ! '; (* Kann eigentlich nicht vorkommen :-D *) end; Hans |
AW: Variable ist plötzlich anders
ja sorry war Schwachsinn von mir..
Da hilft nur durchsteppen.. also breakpoint setzen und den index "i" prüfen. gruss |
AW: Variable ist plötzlich anders
Läuft das ganze in einem Thread oder gibt es noch eine globale/Klassen-Variable, die KundenNummer heisst?
|
AW: Variable ist plötzlich anders
Ganz normales Programm - und Kundennummer als Variable gibt es auch nur in dieser Routine. :-(
Hans |
AW: Variable ist plötzlich anders
Mach aus der Variablen "Kundennummer" ein Property mit Setter und mach einen BreakPoint in den Setter. Dann siehst Du sofort, wer wann was wo warum ändert ;-)
BTW: tut das Not, ein StringGrid als Datenspeicher zu mißbrauchen? Ein Array oder eine Liste wäre eine bessere Trennung von Daten und GUI ;-) |
AW: Variable ist plötzlich anders
Moin,
Danke für die Tipps !! Zu a) Sorry- kannst Du mir zeigen kurz beschreiben ich das mache ?? Leider kann ich damit nichts anfangen :-( zu b) Ja - im Moment noch weil ich es so verstehe - eigentlich wollte ich ja wenn das hier läuft das ganze mal mit TTable umsetzen. Aber ich muss das hier erstmal zum laufen bekommen. Hans |
AW: Variable ist plötzlich anders
Sorry - schon was gefunden wo das beschrieben wird - ich versuche es mal !
Doch nicht :-( Kannst Du mir mal sagen wie ich das machen müsste ? Danke ! Hans |
AW: Variable ist plötzlich anders
Also nochmal gefragt: Du benutzt keinen TThread? (Das wäre ja auch noch ein normales Programm ;-) )
Benutzt Du sonst irgendwo Application.ProcessMessages? Das kann den Programmfluss ggf. auch etwas durcheinander bringen (obwohl vermutlich nicht direkt in der beschriebenen Weise). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 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