AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie Dateizeiger auf bestimmte Position in Textdatei setzen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Dateizeiger auf bestimmte Position in Textdatei setzen?

Ein Thema von mo_greene · begonnen am 1. Apr 2007 · letzter Beitrag vom 2. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#1

Wie Dateizeiger auf bestimmte Position in Textdatei setzen?

  Alt 1. Apr 2007, 18:01
Hallo,

wie kann ich den Dateizeige z.B. auf die 3. Zeile in einer Textdatei setzen?

Mir ist klar, dass ich das mit der Routine "Seek" erreiche, aber was genau muss ich dort eingeben?

Seek(var F; N: Longint) Vielen Dank

Mfg David
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 1. Apr 2007, 18:25
Mit Seek kannst Du auf das x-te Zeichen der Datei springen. Aber da ich davon ausgehen, dass deine Zeilen unterschiedlich lang sind, wird das so nix. Ein Zeilenumbruch erfolgt in der Regel in der Windowswelt durch #10#13, oder eventuell einfach durch #13. Diese Zeichenvorkommen musst du also schon selbst suchen. Oder du lädst die Datei in eine StringList rein und greifst direkt über den Zeilenindex auf die gewünschte Zeile zu.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 1. Apr 2007, 18:29
Hi,

ich denke, dass man hier mit ReadLn schneller am Ziel ist.

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 1. Apr 2007, 18:34
Wie muss ich das angeben, dass der Zeiger auf die x.-Zeile gesetzt wird?

x möchte ich vorher Festlegen!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 1. Apr 2007, 18:35
ReadLn liest immer genau eine Zeile.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 1. Apr 2007, 18:37
Zitat von Jelly:
Mit Seek kannst Du auf das x-te Zeichen der Datei springen. Aber da ich davon ausgehen, dass deine Zeilen unterschiedlich lang sind, wird das so nix. Ein Zeilenumbruch erfolgt in der Regel in der Windowswelt durch #10#13, oder eventuell einfach durch #13. Diese Zeichenvorkommen musst du also schon selbst suchen. Oder du lädst die Datei in eine StringList rein und greifst direkt über den Zeilenindex auf die gewünschte Zeile zu.
fast richtig. Unter Windows wird meist #13#10 verwendet, nicht #10#13
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 1. Apr 2007, 19:29
Delphi-Quellcode:
VAR f : TextFile;
    i : integer;
    s : string;

[...]

AssignFile(f, 'test.txt');
ResetFile(f);

FOR i:=1 to (bis_zeile-1) do readln(f, s);
// jetzt müsste sich der "Zeiger" in der richtigen Position befinden,

// HIER KOMMEN DIE ANWEISUNGEN...

[...]

CloseFile(f);

[edit]
Eine Alternative wäre, die Datei in eine StringList zu laden, hier hat man dann Zugriff auf
die einzelnen Zeilen. So z.B.

Delphi-Quellcode:
 MeineDatei := TSTringLIst.Create;
 MeineDatei.LoadFromFile('test.txt');
 // Zeile 15
 Showmessage(MeineDatei[14]) // Liste fängt bei 0 an...
 MeineDatei.Free;
Hoffe das haut so einigermassen hin. Bin noch nicht so der Profi im Code "blind" schreiben...

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#8

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 1. Apr 2007, 20:49
wie jelly sprach, du kannst in einer textdatei nicht positionieren. du kannts nur, vorne beginnen und dann zeile für zeile durchgehen. eine textdatei lieste normal so...
while not eof(f) do readln(f, s); da musste dann halt abbrechen, wenn du die entsprechende zeile gefunden hast. deinen zugriff solltest du entsprechend optimieren, dass du alle daten beinander hast, wenn du einmal durch deine datei durchgegangen bist um nicht ständig wieder von vorne zu beginnen.

<HTH>
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 1. Apr 2007, 23:37
Okay , werd ich mich mal durcharbeiten...viele Dank aufjedenfall erstmal für die Hilfe von euch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#10

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 2. Apr 2007, 10:39
Zitat von grenzgaenger:
wie jelly sprach, du kannst in einer textdatei nicht positionieren.
Das stimmt nicht ganz.
Offiziell ist es nicht möglich, da Seek delphi-intern gesperrt ist, aber wenn man sich selber ein entsprechende Seek-Funktion erstellt (siehe Forum), dann könnte man dieses dann doch machen.

Nur muß man dann halt aufpassen, denn die Textfunktion von Delphi nuten einen interen Cache, welcher dann leicht durcheinanderkommen kann.

Das Selbe gilt für Dateien über 2 GB Größe ... die Delphifunktionen arbeiten mit 'nem Integer, welcher auf 2 GB begrentz ist, so sind nicht alle Funktionen für über 2 GB nutzbar, es sei denn mann kümmert sich selber drum


Aber damit dein Code "ganz" Sicher läuft, kommst du eigentlich besser, wenn du die Standartfunktionen nutzt und dich dann bis zur entsprechenden Stelle durchließt.

http://www.delphipraxis.net/internal...highlight=seek

alternativ könnte man es auch noch so machen (allerdings dann noch ein paar Sicherheitsabfragen mit einbauen ... so sollte es nur gehn, wenn die gewünschte Zeile 100%ig existiert)
http://www.delphipraxis.net/internal...tial%2A#695457
Delphi-Quellcode:
Var PT: TPartialTextfile;
  i: Int64;
  S: String;


PT := TPartialTextfile.Create;
PT.Open('Test_.pas');
i := PT.GetLineStart(100);
PT.LoadPart(i, 1);
S := PT.Part[0];
PT.Free;

// S = die Zeile welche gleich nach Position 100 beginnt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:28 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