![]() |
Mehrere Dateien in StringList Laden und wieder speichern
Hi,
ich habe ein kleines Problem, ich will mehrere Dateien in eine StringList laden, sie aber auch wieder in diese Dateien speichern können. Also wenn ich z.B. die Dateien blubb.txt, bla.txt und test.txt in die Stringlist lade sollen beim schließen des Programms diese Dateien auch so wieder gespeichert werden, samt änderungen. Dei StringList wird in ein Richedit übergeben und beim speichern wird das Richedit wieder in die Stringlist übertragen und diese dann gespeichert. Meine Idee wäre gewesen bevor eine neue Datei anfängt den Dateipfad mit Dateiname der jeweiligen Datei vor den Anfang der Datei zu schreiben, diese Zeile dann aber beim Anzeigen im Richedit nicht zu berücksichtigen. DateiName und Pfad benötige ich außerdem für die Caption des fensters und eine kleine Anzeige. Wenn jemand eine Idee hätte wie man das lösen/besser lösen kann bin ich für jeden Vorschlag offen. Edit: Ok für das Laden hab ich eine Idee, aber hat vielleicht jemand einen Vorschlag wie ich das ganze dann wieder speichere? sch die Dateien einfach in einem Array merken oder so bringt ja nichts. Gruß AnyKey |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Hallo Anykey,
dein Ansinnen finde ich etwas gewöhnungsbedürftig. Wenn ich es richtig verstnden habe, dann hast Du in einem RichEdit den Inhalt von drei (Text)-Dateien. Das RchEdit impliziert, das der eingelesene Text frei editierbar ist, somit scheint es mir nicht so sinnvoll an jede Textzeile die Herkunft "anzupappen" (.Objects) Mir würde da eher so etwas vorschweben:
Delphi-Quellcode:
Und dann ein "Editfenster" für jeden String, ähnlich wie Name, Vorname, Wohnort.
record
ZeileausDatei1:string; ZeileausDatei2:string; ZeileausDatei3:string; end; Bestimmt nicht optimal, aber wenn wir Deine Dateninhalte nicht kennen, dann ist es schwierig etwas vernünftiges zu sagen. Gruß K-H |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Hi, vielleicht habe ich mich etwas missverständlich ausgedrückt :)
Also ich will mehrere Dateien in eine StringList laden, die ich danach in einem RichEdit anzeige, aber auch noch für eine Andere Funktion benutze. Wenn nun Veränderungen gemacht wurden, will ich diese ja auch wieder speichern, also die Frage wie speichere ich diese Dateien jetzt wieder in ihre jeweilige Ursprungsdatei und nicht in eine neue Datei. Irgendwie muss ich mir ja merken welcher Inhalt der nun im RichEdit steht bzw. sich in der StringList befindet zu welcher Datei gehört, um diesen auch wieder dorthin zu speichern. Gruß AnyKey |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Zitat:
|
Re: Mehrere Dateien in StringList Laden und wieder speichern
Hi,
ich will die Dateien in die Stringlist laden. Meine Idee war nur vor die Jeweilige Datei (also in eine Zeile bevor die Datei beginnt) den Dateinamen zu schreiben und das dann anhand dessen zu Speichern und die Anzeige und die Caption zu schalten. Aber es gibt ja bestimmt eine bessere lösung :) Gruß AnyKey |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Verstehe ich das richtig: du willst mehrere Dateien in ein RichEdit laden, aber jeweils nur eine zu einem Zeitpunkt und die Änderungen sollen wieder in diese Datei geschrieben werden?
|
Re: Mehrere Dateien in StringList Laden und wieder speichern
Ehrlich gesagt verstehe ich den Sinn dahinter noch nicht ganz. Evtl. könntest du aber auch für jede Datei ein eigenes Memo (oder Richedit) dynamisch anlegen und so positionieren, dass die einzelnen Texte direkt untereinander stehen. Allerdings kannst du dann nicht zwei Dateien "gleichzeitig" bearbeiten, also beispielsweise nicht das Ende der einen und den Anfang der nächsten Datei markieren/bearbeiten,...
Vielleicht solltest du nochmal genau erklären, wie du dir das genau vorstellts und vielleicht auch warum ;-) Vielleicht gibt es ja eine bessere Lösung. MFG Edit: Wenn du das so meinst, wie es Uwe Raabe beschrieben hat, dann kannst du dir natürlich die mehreren Memos sparen... |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Nein das ist falsch, ok ok vergesst das RichEdit :)
Ich will mehrere Dateien in eine Stringlist laden, wie das geht habe ich denke ich auch rausgefunden:
Delphi-Quellcode:
müsste denke ich so funktionieren. Das Problem das sich aber eher stellt ist das Speichern dieser Stringliste, der Inhalt kommt ja aus verschiedenen Dateien und er soll auch wieder in diese Dateien zurück und nicht etwa in einer neuen Datei gespeichert werden.
for i := 0 to OpenDialog.Files.Count-1 do
begin Child.ausgabeList.LoadFromFile(OpenDialog.Files[i]); end; Gruß und sorry wenn ich für Verwirrung sorge :) nehmts mir nich übel ;) AnyKey Edit: achso und die Dateien sollen alle zur selben zeit ins Richedit geladen werden und auch bearbeitet werden können. |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Ich versteh gar nicht wie du bei einer neuen Eingabe im Richedit feststellen willst, in welche Datei es kommen soll.
So wie ich dich verstehe hast du 3 Dateien in denen zeilenweise Texte stehen. Alle Dateiinhalte von den Dateien möchtest du in einen Richedit laden. Im Richedit werden Veränderungen vorgenommen. Danach möchtest du den gesamten Inhalt des Richedits in diese drei urprünglichen Dateien wieder speichern. Alles richtig verstanden? Edit: So wie du es vorhast kann es nicht gehen. Du musst einen Bezug des Textes zur jeweiligen Datei behalten. Text im Richedit bzw. in der Stringliste Zitat:
|
Re: Mehrere Dateien in StringList Laden und wieder speichern
@Tyrael Y. genau so solls mal funktionieren. Merke allerdings gerade selber das, dass nich grad unkompliziert ist :) um dem ganzen aber den schrecken zu nehmen, vielleicht kann ich es auch so machen dass man überhaupt keine Datensätze ändern kann, wenn ich recht überlege sollen diese Dateien mit denen ich das vorhabe garnicht verändert werden.... :gruebel: ok ich mach mir noch mal gedanken und meld mich dann noch mal.
Gruß AnyKey |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Wenn sie nicht verändert werden können, dann ist es einfach.
Merke dir für jede Datei wieviele Zeilen es waren. Erzeuge drei Stringlisten. Lese in jede der drei Stringlisten so viele Zeilen aus dem Richedit ein, wie du dir gemerkt hast. Speichere jede Stringliste mit dem Pfad der dazugehörigen Datei. Fertig. |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Zitat:
|
Re: Mehrere Dateien in StringList Laden und wieder speichern
Hallo AnyKey,
um welche Daten handelt es sich? Adressen? wenn ja, dann mußt Du uns nicht sagen ob das die Adressen aller YMCA Niederlassungen weltweit sind sondern nur, daß es sich um Adressdaten handelt. Zitat:
Dann reicht auch das kastrierte Readonly-Memo was vor kurzem hier durchgeisterte. [OT] warum gibt es eigentlich kein TBrowse ?? [/OT] Gruß K-H |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Hi,
@Tyrael Y.: Das mit den 3 Stringlisten geht nicht, wegen dem weiterblättern, was ich ein stück weiter unten erkläre. Ansonsten wär das wohl die Lösung gewesen. @Uwe Raabe: Naja werde ich sehen obs funktioniert, ich denke es müsste so funktionieren, aber wenn du einen besseren Vorschlag hast bin ich auch nicht abgeneigt :) @K-H: Es handelt sich nicht um Adressdaten, sondern um Logfiles. Also, ich versuchs mal zu erklären, die Datei/die Dateien werden in eine Stringlist geladen. In jedem Logfiles befinden sich bestimmt 1000 einträge, mal mehr mal weniger, aber das tut ja nicht viel zur sache, jetzt werden 50 Datensätze zur Anzeige in das RichEdit geladen, um sie sich anzusehen und gegebenenfalls zu ändern. Es gibt eine Funktion weiterblättern, um sich die nächsten 50 Datensätze anzeigen zu lassen. Außerdem gibt es eine Suchfunktion, die die Stringlist nach einem Suchwort durchsucht und die Datensätze mit übereinstimmung in eienm neuen Childfenster in dessen Richedit anzeigt. Warum ich keine andere Komponente nehme als das RichEdit begründet sich damit, dass die "Aufgabenstellung" bzw. der Auftrag so lautet. Edit: Ok das mit dem Speichern hat sich jetzt erledigt, die Logfiles sollen nicht verändert werden können. Ist ja eigentlich auch Logisch, war nur bis jetzt irgendwie anders... Danke für eure Hilfe!! ;) Gruß AnyKey |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Hi,
so wie es aussieht funktioniert das wirklich nicht so mit dem Laden, hat da jemand eine Idee wie das funktionieren könnte? Gruß AnyKey |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Das Problem ist, dass man dir alles aus der Nase ziehen muss.
Du willst also einen LogViewer; also ein Programm zum Betrachten von Logdateien schreiben, oder???? Dann wäre eine MDI-Anwendung sinnvoll. Jede Logdatei erhält ein eigenes Fenster. Jedes Fenster enthält Möglichkeiten zum Suchen oder auch zum Speichern von markierten Abschnitten in einer neuen Datei. Falls alle Logdateien die gleiche Struktur haben, könnte man auch eine Funktion einbauen, damit alle aktiven Fenster die Anzeige bei einem best. Datum+Uhrzeit beginnen... |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Zitat:
Alternative: Lade jede Datei in eine eigene Stringlist und setzte diese dann mit AddStrings zusammen. |
Re: Mehrere Dateien in StringList Laden und wieder speichern
@shmia: man muss mir nicht alles aus der Nase ziehen, ich habs jetzt schon ein paar mal erklärt, vielleicht erklär ichs ja nur falsch...
Es gibt eine MDI Anwendung! Nur denke ich nicht dass es notwendig ist das ganze Projekt zu kennen wenn es mir nur darum geht mehrere Dateien in eine Stringlist zu laden. Also erklär ich das ganze noch einmal: Da es Logfiles sind, können in mehreren Logs die selben Datensätze stehen, wenn ich jetzt die Logfiles von heute von 12:00 und 14:00 was ja dann 2 Logfiles wären laden will, tue ich dies mit dem hintergedanken beide nach dem selben Suchkriterium zu durchsuchen. Das RichEdit dient nur zur Anzeige der Daten, eigentlich stehen sie in einer Stringlist, da ich auch eine Funktion weiterblättern habe. Diese Funktion sieht so aus, dass aus der Stringlist nur jeweils nur 50 Datensätze pro "Seite" angezeigt werden um das ganze überschaubarer zu halten, denn 1000 Datensätze in einem RichEdit wären ja nicht gerade überschaubar. Wenn man nun also auf nächste Seite klickt werden die nächsten 50 Datensätze aus der StringList in das RichEdit geladen. Deswegen kann ich auch nur eine Stringlist verwenden. Also noch einmal meine Frage: Hat jemand eine Idee wie ich mehrere Dateien (da hier immer von drei die rede ist, es können auch mehr als drei sein) in eine StringList laden kann (ich brauch sie wirklich NUR in der Stringlist!) Hoffe ich habe das jetzt besser erklärt und jeder weiß jetzt ungefähr was ich brauche. Wäre super wenn mir jemand helfen könnte! @Uwe Raabe: Das ist auch ne gute Idee, aber da ich ja nicht weiß wieviele Dateien geladen werden wird das mit den vielen Strinlisten auch nicht grad unkompliziert oder? :gruebel: Naja, hoffe es kann mir jemand helfen. Gruß AnyKey |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Zitat:
|
Re: Mehrere Dateien in StringList Laden und wieder speichern
Zitat:
Du brauchst nur 2 Stringlisten. Eine ist deine Gesamt-Stringliste in der alle Einträge landen. Die zweite ist eine Hilfsliste die nur zum Laden gebraucht wird. Du lädst den Inhalt einer Datei in die Hilfsliste. Weist alle Einträge der Hilfsliste der Gesamtliste zu. Leerst die Hilsliste. Liest die nächste Datei in die Hilfsliste. usw. |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Hi,
danke für die schnellen Antworten! @Tyrael: Auf die Idee war ich auch gekommen :) trotzdem Danke!! Also es funktioniert jetzt
Delphi-Quellcode:
So sieht meine Lösung aus, funktioniert auch super!!
helpList := TStringList.Create;
for i := 0 to OpenDialog.Files.Count-1 do begin helpList.LoadFromFile(OpenDialog.Files[i]); Child.ausgabeList.AddStrings(helpList); end; FreeAndNil(helpList); Danke noch mal an alle!! :thumb: Gruß AnyKey |
Re: Mehrere Dateien in StringList Laden und wieder speichern
Jetzt noch ein Ressourcenschutzblock und das wird brauchbar :mrgreen:
Delphi-Quellcode:
helpList := TStringList.Create;
try for i := 0 to OpenDialog.Files.Count-1 do begin helpList.LoadFromFile(OpenDialog.Files[i]); Child.ausgabeList.AddStrings(helpList); end; finally FreeAndNil(helpList); end; |
Re: Mehrere Dateien in StringList Laden und wieder speichern
:mrgreen: Jo das wär auch noch nen guter Plan :)
Hab ich noch eingebaut, danke für den Tipp ;) Gruß AnyKey |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz