Delphi-PRAXiS
Seite 6 von 8   « Erste     456 78      

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 14:36

Re: Spaltenweise auf TStringList zugreifen
 
Habs hinbekommen. Also er meckert an jeder Stelle, wo Zeilenanzahl aufgerufen wird.
z.b.
Delphi-Quellcode:
if Zeilenanzahl = Sek.Count -1 then exit;

aaaaaaaaaa_10 29. Jul 2009 15:43

Re: Spaltenweise auf TStringList zugreifen
 
Woran kann das liegen? Hab ich die Property falsch deklariert?oder etwas vergessen

DeddyH 29. Jul 2009 15:48

Re: Spaltenweise auf TStringList zugreifen
 
Bitte nicht vor Ablauf von 24 Stunden pushen :warn:

xZise 29. Jul 2009 17:22

Re: Spaltenweise auf TStringList zugreifen
 
Eine Zugriffsverletzung bekommt man meißtens wenn man etwas nicht erstellt hat:
Das hier geht wunderbar
Delphi-Quellcode:
Meins := TStringList.Create;
try
  // Mit "Meins" arbeiten
  // z.B. eine Zeile hinzufügen
  Meins.Add('Hallo Welt');
finally
  Meins.Free;
end;
Während das hier zur einer AV (= Accessviolatuion = Zugriffsverletzung) führt:
Delphi-Quellcode:
try
  // Mit "Meins" arbeiten
  // z.B. eine Zeile hinzufügen
  Meins.Add('Hallo Welt'); // <!--- Hier knallt es, weil "Meins" nicht erstellt wurde
finally
  Meins.Free;
end;
Ich tippe mal darauf (ausgehend von dem Codestück aus dem Post #47), dass Sek nicht erstellt wurde.
Könntest du uns vielleicht mal etwas mehr Code zeigen? Also alles bis zum Exit dürfte erstmal reichen.

MfG
xZise

aaaaaaaaaa_10 30. Jul 2009 07:21

Re: Spaltenweise auf TStringList zugreifen
 
Ok, also bis zum xis sieht das so aus:

Delphi-Quellcode:
procedure ZehnMinTimerEvent(Sender: TObject);
var
  Sek, Min, ZwSpeicher : TStringList;
  DreiSek, ZehnMin: string;
  TabPos, Spaltenanzahl, linenum : integer;
begin
  DreiSek := extractfilepath(application.exename)+'Mom3sek_'+Kennung+'.txt';
  ZehnMin := extractfilepath(application.exename)+'Mom10min_'+Kennung+'.txt';
  TestDatei := TFileStream.Create(ExtractFilePath(application.exename)+'test.txt',fmOpenReadWrite);
  TestDatei.Seek(0, soFromEnd);
  Sek := TStringList.Create;
  Min := TStringList.Create;
  ZwSpeicher := TStringList.Create;

  try
    Sek.LoadFromFile(DreiSek);
    if Zeilenanzahl = Sek.Count-1 then exit;
Zeileananzahl habe ich als property deklariert und da wird auch irgendwo der Knackpunkt sein. Sek wurde bereits erstellt. (u.a. in #20 sichtbar)

jaenicke 30. Jul 2009 07:31

Re: Spaltenweise auf TStringList zugreifen
 
Zitat:

Zitat von aaaaaaaaaa_10
Delphi-Quellcode:
procedure ZehnMinTimerEvent(Sender: TObject);
var

Moment mal...
Das müsste doch eigentlich eine Methode einer Klasse sein, wie sonst kannst du auf die Eigenschaft Zeilenanzahl zugreifen? Und sonst ginge das auch gar nicht als Timer-Ereignis. Das kann so also eigentlich nicht der originale Code sein, wenn sich das kompilieren lässt. :gruebel:

aaaaaaaaaa_10 30. Jul 2009 07:42

Re: Spaltenweise auf TStringList zugreifen
 
Delphi-Quellcode:
procedure ZehnMinTimerEvent(Sender: TObject);
ach gott, nee da steht eigentlich

Delphi-Quellcode:
procedure TMomFiles.ZehnMinTimerEvent(Sender: TObject);

jaenicke 30. Jul 2009 07:47

Re: Spaltenweise auf TStringList zugreifen
 
Ich hatte mich nur gefragt, ob du sonst beim Kopieren / Abschreiben noch andere Fehler eingebaut hast... ;-)

Denn der Quelltext sieht soweit funktionierend aus. :gruebel:
Da beim Zugriff auf die Property ein Fehler passiert, setze bitte einmal einen Haltepunkt auf diese Zeile, drücke wenn das Programm dort ankommt Strg + F7 und werte Self aus.
Vermutung: Das könnte nil sein.

Schau da einmal nach, bevor ich da noch viel zu schreibe, wenn es doch nicht so sein sollte.

aaaaaaaaaa_10 30. Jul 2009 07:53

Re: Spaltenweise auf TStringList zugreifen
 
Wenn ich F7 drücke, passiert aber nix.

jaenicke 30. Jul 2009 07:54

Re: Spaltenweise auf TStringList zugreifen
 
Strg + F7, nicht nur F7. Dann sollte, wenn das Programm am Haltepunkt angehalten hat, das Fenster zum Auswerten eines Ausdrucks angezeigt werden. Dort kannst du dann Self hineinschreiben um zu schauen was das (also der aktuelle Objektzeiger zu der Methode) für einen Wert hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr.
Seite 6 von 8   « Erste     456 78      

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 by Thomas Breitkreuz