Delphi-PRAXiS
Seite 5 von 8   « Erste     345 67     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Spaltenweise auf TStringList zugreifen (https://www.delphipraxis.net/137708-spaltenweise-auf-tstringlist-zugreifen.html)

aaaaaaaaaa_10 29. Jul 2009 09:41

Re: Spaltenweise auf TStringList zugreifen
 
Dachte ich auch,aber dadurch dass das ja ein TimerEvent ist, wird das doch immer aktualisiert bevor ich das prüfen kann,oder?

hoika 29. Jul 2009 09:54

Re: Spaltenweise auf TStringList zugreifen
 
Hallo,

du sollst es ja auch im TimeEvent prüfen.
Gleich als 1. Code.
Hat sich nix geändert Exit


Heiko

aaaaaaaaaa_10 29. Jul 2009 10:07

Re: Spaltenweise auf TStringList zugreifen
 
Zitat:

du sollst es ja auch im TimeEvent prüfen.
Gleich als 1. Code.
Aber da weiß ich ja die Zeilenanzahl noch nicht, weil die ja erst im Laufe des Codes aus

Delphi-Quellcode:
 Sek.LoadFromFile(DreiSek);
verwendbar gemacht wird. Blick net durch.

aaaaaaaaaa_10 29. Jul 2009 11:06

Re: Spaltenweise auf TStringList zugreifen
 
Weiß niemand Rat?

jaenicke 29. Jul 2009 11:43

Re: Spaltenweise auf TStringList zugreifen
 
Ja, du lädst die Datei und wenn die Anzahl gleich ist, dann gehst du raus... (finally wird nach Exit übrigens auch ausgeführt)

Alternativ müsstest du die Dateigröße selbst bestimmen, dann bräuchtest du erst gar nix zu laden.

aaaaaaaaaa_10 29. Jul 2009 12:05

Re: Spaltenweise auf TStringList zugreifen
 
So?

Delphi-Quellcode:
var Zeilenanzahl, linenum : integer;
begin
   try
      Sek.LoadFromFile(DreiSek);
      linenum := Sek.Count;
      if Zeilenanzahl = linenum then exit;

      Zeilenanzahl := Sek.Count-1;
              .......
   finally ...
   end;
end;

jaenicke 29. Jul 2009 12:46

Re: Spaltenweise auf TStringList zugreifen
 
Naja, fast...
Du weist linenum (dem neuen Wert) Sek.Count zu, der alte jedoch (Zeilenanzahl) hatte vorher den Wert Sek.Count - 1 bekommen.

Fazit:
Der Vergleich wird dann wahr, wenn eine Zeile in der Datei gelöscht wurde... ;-)

Lösung:
Delphi-Quellcode:
var Zeilenanzahl, linenum : integer;
begin
   try
      Sek.LoadFromFile(DreiSek);
      if Zeilenanzahl = Sek.Count - 1 then
        Exit;

      Zeilenanzahl := Sek.Count - 1;
              .......
   finally ...
   end;
end;
// EDIT:
Wobei ich schlicht das - 1 dort ganz weglassen würde...

// EDIT2:
Und Zeilenanzahl muss eben wie gesagt als Feld oder Eigenschaft des Formulars deklariert sein, nicht als lokale Variable (die bei jedem Aufruf wieder verworfen wird)...

aaaaaaaaaa_10 29. Jul 2009 12:59

Re: Spaltenweise auf TStringList zugreifen
 
Mit :
Delphi-Quellcode:
type
  TMomFiles=class(TForm)
  private
   FZeilenanzahl : integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
     ......
    property Zeilenanzahl: Integer Read FZeilenanzahl Write FZeilenanzahl;
  end;

.......

Sek.LoadFromFile(DreiSek);
    if Zeilenanzahl = Sek.Count -1 then exit;
gibt es eine Zuzgriffsverletzung.

jaenicke 29. Jul 2009 13:12

Re: Spaltenweise auf TStringList zugreifen
 
Dann musst du schauen wo.

aaaaaaaaaa_10 29. Jul 2009 13:16

Re: Spaltenweise auf TStringList zugreifen
 
Wie finde ich denn die Adresse, die in der Zugriffsverletzung geg ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 Uhr.
Seite 5 von 8   « Erste     345 67     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