AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion Seek (arbeiten mit Datein)

Ein Thema von malibu85 · begonnen am 7. Jan 2008 · letzter Beitrag vom 7. Jan 2008
Antwort Antwort
malibu85

Registriert seit: 27. Dez 2007
45 Beiträge
 
#1

Funktion Seek (arbeiten mit Datein)

  Alt 7. Jan 2008, 07:54
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:
                                    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;
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.

Was genau sagt eigentlich die Funktion
seek(Dat,filepos(Dat)-1); aus?
Kann es sein dass dadurch der zeiger in der datei immer um eine stelle nach links verschoben wird?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Funktion Seek (arbeiten mit Datein)

  Alt 7. Jan 2008, 08:09
Zitat:
Was genau sagt eigentlich die Funktion
Delphi-Quellcode: markieren
seek(Dat,filepos(Dat)-1);


aus?
Kann es sein dass dadurch der zeiger in der datei immer um eine stelle nach links verschoben wird?
Guten Morgen,

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
Klaus
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#3

Re: Funktion Seek (arbeiten mit Datein)

  Alt 7. Jan 2008, 08:17
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
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
malibu85

Registriert seit: 27. Dez 2007
45 Beiträge
 
#4

Re: Funktion Seek (arbeiten mit Datein)

  Alt 7. Jan 2008, 08:30
könnte ich nun auch eine schlife erstellen, welche die Komplette datei einmal durchläuft
also ungefähr so

Delphi-Quellcode:

reset(Dat);
Seek(dat,0);
while not ( Seek(dat,FileSize(dat) ) do
begin
read(Dat,Werte);
seek(Dat,filepos(Dat)+1);
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.

geht das? hab mir gedacht das seek(Dat,filepos(Dat)+1); den zeiger um eine position weiter setzt
  Mit Zitat antworten Zitat
malibu85

Registriert seit: 27. Dez 2007
45 Beiträge
 
#5

Re: Funktion Seek (arbeiten mit Datein)

  Alt 7. Jan 2008, 08:32
@mashutu
ja danke für den hinweis. das dort oben war nur ein test.
  Mit Zitat antworten Zitat
malibu85

Registriert seit: 27. Dez 2007
45 Beiträge
 
#6

Re: Funktion Seek (arbeiten mit Datein)

  Alt 7. Jan 2008, 08:33
ups ich glaube meine abbruchbedingung ist ein wenig falsch...meine natürlich ohne seek davor
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Funktion Seek (arbeiten mit Datein)

  Alt 7. Jan 2008, 08:34
Zitat von malibu85:
könnte ich nun auch eine schlife erstellen, welche die Komplette datei einmal durchläuft
also ungefähr so

Delphi-Quellcode:

reset(Dat);
Seek(dat,0);
while not ( Seek(dat,FileSize(dat) ) do
begin
read(Dat,Werte);
seek(Dat,filepos(Dat)+1);
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.

geht das? hab mir gedacht das seek(Dat,filepos(Dat)+1); den zeiger um eine position weiter setzt
Die Datei kannst Du mit

while not eof(dat) do durchlaufen.
Und nach einem read wird der Positionszeiger automatisch um 1 erhöht.
Bei Dir würde nur jeder zweite Datensatz gelesen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 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