Autor Beitrag
der_zaehe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

WinXP SP2
D6 Pers, D2005 Prof, VS2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

WinXP SP2
D6 Pers, D2005 Prof, VS2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 11.06.05 18:50 
user profile iconalias5000 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 11.06.05 19:03 
user profile iconalias5000 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

WinXP SP2
D6 Pers, D2005 Prof, VS2005
BeitragVerfasst: Sa 11.06.05 19:06 
user profile iconalias5000 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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...