![]() |
Funktion Seek (arbeiten mit Datein)
Guten Morgen zusammen und allen ein frohes neues jahr.
Ich habe auch gleich eine frage. und zwar geht es um das anlegen und verwalten von datein und Datensätzen. In vielen büchern fast man alles unter dem Kapitel "Árbeiten mit Datein" zusammen. Ich habe bisher herausgefunden, wie mn eine Datei anlegt und durch die folgende anweisung kann ich genau auf die erste Position einen Datenstz einfügen.
Delphi-Quellcode:
mit dieser anweisung kann man genau einen Datensatz auf die erste Position einfügen...irgendwie komme ich aber mit der seek anweisung nicht zurecht. Ich würde z.b gern bei der ersten position in der datei starten und bis zum ende durchlaufen, wenn ich dann das letzte element gefunden habe dann soll ein neues rechts eingefügt werden.
with satz do
begin Key := StrToInt(edit1.text); Wert1 := edit2.text; Wert2 := StrToInt(edit3.text); Anzahl:= StrToInt(edit4.text); end; reset(Dat); //hier war mein großes Problem!!!! seek(Dat,0); if (filepos(Dat)=0) then begin write(dat,satz); end; Was genau sagt eigentlich die Funktion
Delphi-Quellcode:
aus?
seek(Dat,filepos(Dat)-1);
Kann es sein dass dadurch der zeiger in der datei immer um eine stelle nach links verschoben wird? |
Re: Funktion Seek (arbeiten mit Datein)
Zitat:
das setzt den Positionszeiger eine Datensatz(Record)Position vor die aktuelle Position. Seek(dat,0) - bringt dich an den Anfang der Datei Seek(dat,FileSize(dat) bringt dich an das Dateiende. Grüße Klaus |
Re: Funktion Seek (arbeiten mit Datein)
Hi,
beachte bitte, dass kein Datensatz eingefuegt wird, so wie du das machst, sondern dass der Satz an der ersten Position ueberschrieben wird! - Nur so als Hinweis |
Re: Funktion Seek (arbeiten mit Datein)
könnte ich nun auch eine schlife erstellen, welche die Komplette datei einmal durchläuft
also ungefähr so
Delphi-Quellcode:
habe mir gedacht, dass das durchlaufen wie bei einer liste funktioniert. also ich setze mit Seek(dat,0) den zeiger auf die erste Position und setze in der schleife den zeiger immer eins weiter bis er eof ist.reset(Dat); Seek(dat,0); while not ( Seek(dat,FileSize(dat) ) do begin read(Dat,Werte); seek(Dat,filepos(Dat)+1); geht das? hab mir gedacht das seek(Dat,filepos(Dat)+1); den zeiger um eine position weiter setzt |
Re: Funktion Seek (arbeiten mit Datein)
@mashutu
ja danke für den hinweis. das dort oben war nur ein test. |
Re: Funktion Seek (arbeiten mit Datein)
ups ich glaube meine abbruchbedingung ist ein wenig falsch...meine natürlich ohne seek davor
|
Re: Funktion Seek (arbeiten mit Datein)
Zitat:
Delphi-Quellcode:
durchlaufen.
while not eof(dat) do
Und nach einem read wird der Positionszeiger automatisch um 1 erhöht. Bei Dir würde nur jeder zweite Datensatz gelesen. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 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