Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Variable ist plötzlich anders (https://www.delphipraxis.net/192961-variable-ist-ploetzlich-anders.html)

H.Bothur 6. Jun 2017 15:36

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:
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;
In der Routine ändere ich nicht den Inhalt von KundenNummer.
Es wird auch keine andere Routine aufgerufen.
Hinweise und Warnungen auf Laufzeitfehler sind eingeschaltet.

Hier in Debugger-Exceptions hatte ich schonmal "komische" Probleme mit dem Programm - nur wie finde ich den Fehler wenn ich keine Exception bekomme ?

Hans

EWeiss 6. Jun 2017 15:43

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

H.Bothur 6. Jun 2017 15:56

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:
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;
Wobei ... ioch glaube eigentlich nicht das es an dieser Routine liegt :-( Aber wo suchen ??

Hans

EWeiss 6. Jun 2017 15:57

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

bra 6. Jun 2017 16:09

AW: Variable ist plötzlich anders
 
Läuft das ganze in einem Thread oder gibt es noch eine globale/Klassen-Variable, die KundenNummer heisst?

H.Bothur 6. Jun 2017 16:16

AW: Variable ist plötzlich anders
 
Ganz normales Programm - und Kundennummer als Variable gibt es auch nur in dieser Routine. :-(

Hans

ConnorMcLeod 6. Jun 2017 16:35

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 ;-)

H.Bothur 6. Jun 2017 16:41

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

H.Bothur 6. Jun 2017 16:43

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

stahli 6. Jun 2017 16:51

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 22:22 Uhr.
Seite 1 von 4  1 23     Letzte »    

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