Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#27

AW: Variable ist plötzlich anders

  Alt 6. Jun 2017, 20:27
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;
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;
Die beiden Routinen sind überhaupt nicht gleich, es besteht allerhöchstens eine oberflächliche Ähnlichkeit.
Die erste ist Teil einer Klassendefinition, die zweite ist "unabhängig".
In der ersten sollten alle UKunden durch self ersetzt werden.
Ebenso sollte procedure TUKunden.FirstKundenSuchen(KundenNummer: String; var.... durch procedure TUKunden.FirstKundenSuchen(const KundenNummer: String; var.... ersetzt werden.
in der zweiten wird die Laufvariable durch UKunden.KundenSpeicherSG.RowCount -1 begrenzt und auf StringGrid[1, i] zugegriffen. Das ist zumindest ungewöhnlich. Woher kommt "Stringgrid" ?

Gruß
K-H

P.S.
Sind die üblichen Prüfungen (Bereich etc.) aktiviert?
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat