AGB  ·  Datenschutz  ·  Impressum  







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

seek in textdateien

Ein Thema von ltsavar · begonnen am 16. Jun 2004 · letzter Beitrag vom 17. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2      
ltsavar

Registriert seit: 16. Jun 2004
6 Beiträge
 
#1

seek in textdateien

  Alt 16. Jun 2004, 10:21
Hallo,

ich möchte in einer Textdatei eine bestimme Stelle finden und dann an diese Stelle etwas einfügen. Nun ist die Datei ziemlich groß d.h. mehrere 1000 Zeichen und ein String kann ja maximal 255 Zeichen beherbergen. Hat jemand eine Idee wie ich das realisieren kann? Die Funktion seek kann ich da ja leider auch nicht verwenden um dann an diese Stelle zuspringen vielleicht hat jemand eine Idee?

Gruß

Ingo
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

Re: seek in textdateien

  Alt 16. Jun 2004, 10:46
herzlich willkommen

du kannst die datei im ganzen einlesen und dann durchsuchen lassen oder du liest die datei zeilenweise ein, fügst dann den string ein und speicherst die datei .. spricht doch nichts dagegen
schau mal nach tmemo oder trichedit

gruß rené
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#3

Re: seek in textdateien

  Alt 16. Jun 2004, 10:48
Hallo,

Klick
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#4

Re: seek in textdateien

  Alt 16. Jun 2004, 11:00
also wie groß denn nun wirklich, mehrere 1000 zeichen muß nicht groß sein kann aber...
  Mit Zitat antworten Zitat
ltsavar

Registriert seit: 16. Jun 2004
6 Beiträge
 
#5

Re: seek in textdateien

  Alt 16. Jun 2004, 11:14
Hi erstmal danke für die antworten,

Zitat von ibp:
also wie groß denn nun wirklich, mehrere 1000 zeichen muß nicht groß sein kann aber...
also so groß ist sie nicht 100kb, aber enthält halt ziemlich viele zeichen :/


Zitat von ibp:

du kannst die datei im ganzen einlesen und dann durchsuchen lassen oder du liest die datei zeilenweise ein, fügst dann den string ein und speicherst die datei .. spricht doch nichts dagegen
schau mal nach tmemo oder trichedit

gruß rené
zeilenweise einlesen geht nicht. das ist nur eine zeile ohne carriage return. und wenn ich das nur in nen string einlese hab ich ja das problem mit den 255 Zeichen...
aber ok tmemo hab ich mir noch nicht angeguckt...

ich hatte das halt so probiert:
assignfile(f,Edit1.text);
reset(f);
read(f,readst);
.
.
.

und das geht ja so nicht...

Gruß Ingo
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: seek in textdateien

  Alt 16. Jun 2004, 11:59
Zitat von ltsavar:
ich möchte in einer Textdatei eine bestimme Stelle finden und dann an diese Stelle etwas einfügen.
Um es mal ganz klar zu sagen:
Man kann in Dateien nicht in der Mitte oder am Anfang Daten Einfügen!
Man kann nur:
  • die Datei komplett in den Speicher einlesen (z.B. mit TStrings), Daten einfügen und speichern (dabei wird die orginale Datei überschrieben)
    Sehr einfach zu programmieren
  • Datei ab der Einfügestelle bis Dateiende in RAM einlesen, einzufügende Daten schreiben, gespeicherte Daten aus RAM schreiben
  • Datei bis zu Einfügestelle lesen und in Datei B kopieren, Datei B mit einzufügende Daten beschreiben und Rest von Datei A nach Datei B anhängen. Anschliesend Datei A löschen, Datei B nach Datei A umbenennen
    Braucht (fast) keinen Speicher, aber langsam
Andreas
  Mit Zitat antworten Zitat
ltsavar

Registriert seit: 16. Jun 2004
6 Beiträge
 
#7

Re: seek in textdateien

  Alt 16. Jun 2004, 12:16
Zitat von shmia:
Zitat von ltsavar:
ich möchte in einer Textdatei eine bestimme Stelle finden und dann an diese Stelle etwas einfügen.
Um es mal ganz klar zu sagen:
Man kann in Dateien nicht in der Mitte oder am Anfang Daten Einfügen!
Man kann nur:
  • die Datei komplett in den Speicher einlesen (z.B. mit TStrings), Daten einfügen und speichern (dabei wird die orginale Datei überschrieben)
Hallo shmia,

wenn du mir jetzt nur noch kurz sagst wie so ein Einlesen mit TStrings funktioniert wäre ich glücklich ...

Gruß Ingo
  Mit Zitat antworten Zitat
Benutzerbild von Spezi1980
Spezi1980

Registriert seit: 11. Aug 2003
Ort: Dresden OT Cossebaude
71 Beiträge
 
Delphi 2005 Personal
 
#8

Re: seek in textdateien

  Alt 16. Jun 2004, 13:22
Zitat:
zeilenweise einlesen geht nicht. das ist nur eine zeile ohne carriage return. und wenn ich das nur in nen string einlese hab ich ja das problem mit den 255 Zeichen...
aber ok tmemo hab ich mir noch nicht angeguckt...
Wieso Strings und 255 Zeichen?

Under Pascalzeiten war ein String auf 155 Zeichen beschränkt. In Delphi gibt es unter anderem den Datentyp Shortstring (der ist max 255 Zeichen groß) und den Datentyp AnsiString (der bis 2Gb groß sein kann).

Der Typ String ist dann je nach gesetztem Compilerschalter {$H+}/{$H-} ein Shortstring oder ein Ansistring.

Du kannst also problemlos alles in einen String einlesen und durchforsten.

TStrings ist eine art dynamisches Stringarray, in dem mehrere Strings gespeichert werden und für deinen fall eher weniger zu gebrauchen, da hier beim laden auch das carriage return auswertet wird.

Gruß Robert
Robert
Codito, ergo sum.
>>I code, therefore I am<<
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#9

Re: seek in textdateien

  Alt 16. Jun 2004, 13:24
versuchs mal damit...
Memo1.LoadFromFile(DateiName) und übrigens gibt es hier eine tolle suche...

  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: seek in textdateien

  Alt 16. Jun 2004, 13:26
Zitat von ltsavar:
wenn du mir jetzt nur noch kurz sagst wie so ein Einlesen mit TStrings funktioniert wäre ich glücklich ...
Nicht leichter als das:
Delphi-Quellcode:
var
   liste : TStrings;
begin
   liste := TStringList.Create;
   try
      // Daten laden
      liste.LoadFromFile('lottozahlen.txt');
      if liste.Count >= 10 then
      begin
         // füge folgene Zeile an Zeilennummer 10 ein
         liste.Insert(10, '5 18 27 31 31 49');
         // ändere eine bestehende Zeile
         liste.Strings[9] := '*** '+liste.Strings[9] + ' // nur ein Kommentar';
         
      end;

      // lösche die ersten beiden Zeilen
      liste.Delete(0);
      liste.Delete(0);


      // speichern
      liste.LoadFromFile('lottozahlen.txt');
   finally
      liste.Free; // aufräumen
   end;
end;
Andreas
  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 20:07 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