Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Dateiinhalt in Stringliste umwandeln
Peter18 - Do 06.09.12 19:22
Titel: Dateiinhalt in Stringliste umwandeln
Ein freundliches Hallo an alle,
leider habe ich wenig Unterlagen zu Delphi 4. Daher folgende Frage:
ich öffne eine Seuerdatei mit TFileStream, weil ich sie exclusiv zum lesen und schreiben öffnen möchte, damit es bei Änderungen im Netzwerk keine Konflikte gibt. Da es sich umeine kleine Datei handelt kann ich sie vollständig einlesen und habe in einer PChar-Variablen alle Zeilen. Es wäre nun schön, wenn ich nicht alle Zeilen selbst auseinander pulen müsste, sondern das durch convertieren oder zuweisen als Stringliste hätte. In der Hilfe habe ich nichts passendes gefunden, auch nicht im Forum.
Ich hoffe jemand hat einem Tipp.
Grüße von der Nordsee
Peter
Martok - Do 06.09.12 19:43
Hallo,
TStringList hat eine Methode LoadFromStream().
Meinst du das?
Grüße,
Martok
Mathematiker - Do 06.09.12 19:47
Hallo,
Peter18 hat folgendes geschrieben : |
Es wäre nun schön, wenn ich nicht alle Zeilen selbst auseinander pulen müsste, sondern das durch convertieren oder zuweisen als Stringliste hätte. |
vielleicht habe ich Dich nicht richtig verstanden, aber warum lädst Du Deine Datei nicht sofort in die Stringliste:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var liste:tstringlist; begin liste:=tstringlist.create; liste.loadfromfile('Dateiname');
liste.savetofile('Dateiname'); liste.free; end; |
Die einzelnen Einträge findest Du dann unter liste[0] bis liste[liste.count-1].
Oder gibt es da Konflikte im Netzwerk?
Beste Grüße
Mathematiker
Peter18 - Fr 07.09.12 00:45
Hallo Mathematiker, hallo Martok,
danke für eure Antwort. Ich kene diese Möglichkeit, doch dort kann ich, wie es aussieht, nicht exklusiv zum lesen und schreiben öffnen, um Konflikte im Netzwerk zu vermeiden. Mit "liste.loadfromfile" würde ich die Datei nur lesen und später schreiben. In der Zwischenzeit könnte sie von einem (theoretisch und selten auch praktisch) Anderen inzwischen geändertworden sein!
Diese Methoden wären natürlich schöner, aber Änderungen sollten sicher programmiert sein, vor allem im Netzwerk! :wink:
Grüße von der Nordsee
Peter
Martok - Fr 07.09.12 01:13
Moin,
es hat schon einen Grund, dass ich LoadFrom
Stream erwähnte ;-)
Du erzeugst deinen Stream wie bisher auch und lässt diesen die ganze Zeit offen. In der Zwischenzeit kannst du mit der StringList rumfummeln und schreibst hinterher die Änderungen wieder weg.
Im Editor getippt, sowas in der Art (nur natürlich in ordentlich :zwinker: ) meine ich:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| Stream:= TFilestream.Create('\\foo\bar\file.txt',fmOpenWrite or fmShareExclusive); List:= TStringList.Create; List.LoadFromStream(Stream); List.Add('blubb'); Stream.Position:= 0; Stream.Size:= 0; List.SaveToStream(Stream); Stream.Free; |
Wobei du beachten solltest, dass TFileStream etwas kaputt ist und kein Open-Or-Create kann. Aber das ist ja hier nicht die Frage gewesen :roll:
Grüße,
Martok
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!