Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeile wird Übersprungen (https://www.delphipraxis.net/141024-zeile-wird-uebersprungen.html)

Jens Hartmann 30. Sep 2009 21:36


Zeile wird Übersprungen
 
Hallo,

vieleicht ist es ja jetzt auch schon zu spät, aber ich habe in einer Funktion, ein seltsames Problem. Wenn folgender Code ausgeführt wird, und ich den Code mit F7 durchtippe, wird die Zeile mit der Zuweisung der Integer Var. Anzahl einfach Übersprungen.

Delphi-Quellcode:
  DataFile := StringReplace(DataFile, #154, 'Ü', [rfReplaceAll]);

  Anzahl := 1;

while Length(DataFile) > 1 do begin
Außerdem, wird in folgender Zeile, ohne das die String Var. DataFile Teil des Codes ist, diese Var. auf den Wert von CurEntry.Datum gesetzt. (Kann im Debugmodus sehen).

Delphi-Quellcode:
    if Pos('Datum:', CurLine) = 1 then
      begin
        TempDatum := CurLine;
        Delete(TempDatum, 1, 7);
        Delete(TempDatum, 11, 19);
        CurEntry.Datum := TempDatum; //beim Ausführen dieser Zeile wird die Var. DataFile auf den Wert TempDatum gesetzt.
        TempUhrzeit := CurLine;
        Delete(TempUhrzeit,1, 28);
        CurEntry.Uhrzeit := TempUhrzeit;
        {Ende Datumseintrag}
    end;
im folgenden mal die gesamte Funktion...

Delphi-Quellcode:
  DataFile := Text;
  DataFile := StringReplace(DataFile, #154, 'Ü', [rfReplaceAll]);
  DataFile := trim(StringReplace(DataFile, #$D, '', [rfReplaceAll]));
  DataFile := StringReplace(DataFile, #129, 'ü', [rfReplaceAll]);
  DataFile := trim(StringReplace(DataFile, #132, 'ä', [rfReplaceAll]));
  DataFile := StringReplace(DataFile, #142, 'Ä', [rfReplaceAll]);
  DataFile := StringReplace(DataFile, #148, 'ö', [rfReplaceAll]);
  DataFile := StringReplace(DataFile, #153, 'Ö', [rfReplaceAll]);
  DataFile := StringReplace(DataFile, #154, 'Ü', [rfReplaceAll]);

  Anzahl := 1;

while Length(DataFile) > 1 do begin

  CurDataPointer := Pos(#$A#$A#$A#$A,DataFile);
  CurData := Copy(DataFile,1,CurDataPointer-1);
  Delete(DataFile,1,CurDataPointer+3);

{Indexbehandlungsroutine}
    CurLine := CurData;
    if Pos('Ereignis:', CurLine) = 1 then
      begin
        Delete(CurLine, 1, 10);
        CurEntry.LfdNr := StrToInt(Copy(CurLine,1,4));
      end
      else
        CurEntry.LfdNr := 0000;

{Datum & Uhrzeitbehandlungsroutine}

  CurDataPointer := Pos('Datum',CurData);
  CurLine := Copy(Curdata,CurDataPointer,36);

    if Pos('Datum:', CurLine) = 1 then
      begin
        TempDatum := CurLine;
        Delete(TempDatum, 1, 7);
        Delete(TempDatum, 11, 19);
        CurEntry.Datum := TempDatum;
        TempUhrzeit := CurLine;
        Delete(TempUhrzeit,1, 28);
        CurEntry.Uhrzeit := TempUhrzeit;
        {Ende Datumseintrag}
    end;

{Ereignisbehandlungsroutine}

  CurDataPointer := Pos(#$A#$A,CurData);
  Delete(CurData, 1, CurDataPointer+1);

  CurDataPointer := Pos(#$A#$A,CurData);
  Delete(CurData, 1, CurDataPointer+1);

  CurTempAll := Curdata;

  CurDataPointer := Pos(#$A#$A,CurTempAll);
  if CurDataPointer > 1 then
    begin
      ShowMessage('Test');
      Anzahl := 1;
      Delete(CurTempAll, 1, CurDataPointer+1);
      CurDataPointer := Pos(#$A#$A,CurTempAll);
    end;
  if CurDataPointer > 1 then
    begin
      Anzahl := 2;
      Delete(CurTempAll, 1, CurDataPointer+1);
      CurDataPointer := Pos(#$A#$A,CurTempAll);
    end;
  if CurDataPointer > 1 then
    begin
      Anzahl := 3;
      Delete(CurTempAll, 1, CurDataPointer+1);
      CurDataPointer := Pos(#$A#$A,CurTempAll);
    end;
  end;
end;
Ich hoffe ich bin nur zu Müde und nicht zu doof. Danke schon mal.

MFG

Jens

Klaus01 30. Sep 2009 23:01

Re: Zeile wird Übersprungen
 
Gute Nacht,

wenn Anzahl im späteren Code nicht benutzt wird, entfernt
es der Compiler.
Du wirst wahrscheinlich auch nicht in der Lage sein
dort einen Haltepunkt zu platzieren.

Grüße
Klaus

Jens Hartmann 1. Okt 2009 07:19

Re: Zeile wird Übersprungen
 
Danke,

das war schon mal so. Jetzt wäre nur die Frage, warum DataFile geändert.

MFG

Jens

jfheins 1. Okt 2009 07:53

Re: Zeile wird Übersprungen
 
Hast du die Compileroptimierung aktiviert? Zum Debuggen solltest du die ausschalten. Dann dürfte auch alles so laufen wie du glaubst dass es laufen sollte ;)

Jens Hartmann 1. Okt 2009 15:09

Re: Zeile wird Übersprungen
 
Ich denke nicht, muss ich mir heute Abend nochmal ansehen. Erstmal dank.

MFG

Jens


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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