Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TextFile und System.Seek machen im Zusammenspiel Probleme (https://www.delphipraxis.net/16925-textfile-und-system-seek-machen-im-zusammenspiel-probleme.html)

scouty 25. Feb 2004 18:37


TextFile und System.Seek machen im Zusammenspiel Probleme
 
Ich habe folgendes Problem:
Ich möchte auf Daten in einer CSV_Datei zugreifen. Um dies möglichst komfortable zu gewährleisten, habe ich ein Objekt erstellt TCSVManager. Dieses Objekt besitzt u.a. das Attribute FFile vom Typ TextFile mit der CSV-Datei.

Code:
 
TCSVManager = class(TComponent)
private
 FFile: TextFile;
Protected
 Function GetColNo: Integer;
     ...
end;
Nun mein Problem:


Delphi-Quellcode:
function TCSVManager.GetColNo: Integer;
var S: String;
begin
  Seek(FFile, 0);
  ReadLn(FFile, S);
  Result := Explode(S, ';').Count;
end;

Wenn ich in der Funktion die Procedure System.Seek verwenden will, um die Position auf die Zeile in der Datei zu bestimmen, dann nervt mich Delphi mit einer Exception “Inkompatible Typen“, welche ich mir hier nicht erklären kann. Wenn ich meiner Literatur und dem Delphi Forum / Suche: "TextFile" AND "Seek" folge, dann müsste ich die Prozedure Seek mit Textfilen verwenden können. Aber wo liegt dann das Problem???


Also, wenn hier einer eine Idee hat, dann wäre ich sehr dankbar.


Greetings Scouty

stoxx 25. Feb 2004 22:31

Re: TextFile und System.Seek machen im Zusammenspiel Problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
also die Delphi Hilfe meinte was anderes ..

scouty 26. Feb 2004 10:37

Re: TextFile und System.Seek machen im Zusammenspiel Problem
 
Danke, dann muss ich das übersehen haben. Aber wie kann ich mich dann in einer Textdatei auf eine bestimmte Zeile bewegen???


Greetings Joerg

Brüggendiek 26. Feb 2004 10:44

Re: TextFile und System.Seek machen im Zusammenspiel Problem
 
Hallo Jörg!

Da gibt es 2 Möglichkeiten:
1. die Textdatei zeilenweise mit ReadLn einlesen bis die gesuchte Zeile da ist. Ändern von Zeilen ist dann allerdings nicht möglich (oder es wird eine neue Datei geschrieben). Außerdem müssen die Zeilen in Reihenfolge bearbeitet werden - ein "Zurückspulen" der Datei ist nicht möglich.

2. die Datei mit LoadFromFile in eine Stringlist einlesen. Dann kannst Du einzelne Zeilen in beliebiger Reihenfolge ändern und danach das Ganze mit SaveToFile wieder auf die Platte packen.

Die 2. Methode ist Windows-Konform, braucht aber viel Speicher (nach Windows wird normalerweise die ganze Datei in den Speicher gelesen - wir haben ja 2 GB). Deshalb bevorzuge ich die erste Variante!

Gruß

Dietmar Brüggendiek


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.

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