| Autor |
Beitrag |
der_zaehe
      
Beiträge: 317
WinXP SP2
D6 Pers, D2005 Prof, VS2005
|
Verfasst: Sa 11.06.05 15:50
jaa, hallo erstmal ...
gibt es eigentlich eine möglichkeit, mit einem textfile ganz bestimmte zeilen in einer datei zu suchen und diese zu überschreiben, zu ändern, zu löschen, ohne die ganz datei neu schreiben zu müssen?
danke schonmal im voraus.
mfg der_zaehe
_________________ [inspirationslos]
|
|
Narses
      

Beiträge: 10184
Erhaltene Danke: 1259
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 11.06.05 15:55
Moin!
Wenn du die Anzahl der Zeichen nicht verändern willst, kannste doch einfach die Bytes austauschen.
Ansonsten führt kein Weg am Neuschreiben vorbei.
cu
Narses
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 11.06.05 16:45
guck dir mal den befehl seek an
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
der_zaehe 
      
Beiträge: 317
WinXP SP2
D6 Pers, D2005 Prof, VS2005
|
Verfasst: Sa 11.06.05 18:25
seek war auch mein erster gedanke, hab dann aber leider feststellen müssen, das der nur bei untypisierten dateien funktioniert, nicht bei textdateien.
_________________ [inspirationslos]
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Sa 11.06.05 18:36
Also wenn du die Textfile per AssignFile und ReadLn in eine TStringList einließt kannst du damit machen was du willst 
_________________ Programmers never die, they just GOSUB without RETURN
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 11.06.05 18:50
alias5000 hat folgendes geschrieben: | Also wenn du die Textfile per AssignFile und ReadLn in eine TStringList einließt kannst du damit machen was du willst  |
das ginge auch einfacher mit stringlist.loadfromfile - nur was soll das bringen ?
@der_zaehe: du kannst ja nen file of char verwenden, musst dann halt immer ein zeichen lesen bis zum #13#10
-> neue zeile
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 11.06.05 18:54
Warum besteht eigentlich überhaupt der Zeilenumbruch aus 2 Bytes (also #13 und #10)? Würde nicht einer reichen?
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Sa 11.06.05 18:59
@retnyg: Das ist so ein Problem bei manchen Textfiles, dass kein Zeilenabschlusszeichen (#13) gesetzt wird. Kommt zwar selten vor, war aber nur die sicherste Variante. Ist dieses Zeichen nicht vorhanden, klappts mit LoadfromFile halt net.
_________________ Programmers never die, they just GOSUB without RETURN
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 11.06.05 19:00
#13 ist das CR - carriage return
#10 das LF - line feed
ist halt seit DOS-zeiten so üblich
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 11.06.05 19:03
alias5000 hat folgendes geschrieben: | | @retnyg: Das ist so ein Problem bei manchen Textfiles, dass kein Zeilenabschlusszeichen (#13) gesetzt wird. Kommt zwar selten vor, war aber nur die sicherste Variante. Ist dieses Zeichen nicht vorhanden, klappts mit LoadfromFile halt net. |
also afaik liest readln auch immer bis zum #13#10, bzw zum eof bei der letzten zeile
dass textdateien kein #13 zum zeilenabschluss verwenden, habe ich bislang noch nie gesehen ^^
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
der_zaehe 
      
Beiträge: 317
WinXP SP2
D6 Pers, D2005 Prof, VS2005
|
Verfasst: Sa 11.06.05 19:06
alias5000 hat folgendes geschrieben: | Also wenn du die Textfile per AssignFile und ReadLn in eine TStringList einließt kannst du damit machen was du willst  |
schon klar, ne? jedoch wollte ich gerade das vermeiden. der hintergrund bei der ganzen sache ist, das ich einen server für ein chat schreibe, der eine mischung aus icq und irc ist, d.h. jeder angemeldete benutzer hat eine benutzerliste. ich probiere das ganze so zu optimieren, das mehrere drölftausend benutzer gelichzeitig an einem server hängen können, ohne das der verreckt.
ist zwar utopisch, das sich da wirklich so viele anmelden, mir geht es jedoch mehr um die theorie als um den praktischen nutzen.
die datei erst mal in den arbeitsspeicher zu laden, bedeutet unnötig verbrauchte kapazitäten. deshalb will ich das nach möglichkeit vermeiden.
_________________ [inspirationslos]
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 11.06.05 19:11
ich weiss nicht wofür du da ne textdatei benötigst, aber prinzipiell könntest du auch ein MMF (memory mapped file) verwenden
www.delphi-forum.de/...;highlight=semaphore
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
|