Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mehrere Dateien in Memo laden? (https://www.delphipraxis.net/130908-mehrere-dateien-memo-laden.html)

coolio 15. Mär 2009 15:41


Mehrere Dateien in Memo laden?
 
Hallo

Habe mal wieder ein Problem. Und zwar möchte ich mehrere Dateien nacheinander in ein Memo laden. Dann soll die Datei, die gerade geladen ist, nach einem bestimmten String durchsucht werden. Anschließend soll wieder die nächste Datei ins Memo geladen werden. Am besten wäre es, wenn ich ein Verzeichnis, in dem sich alle Dateien befinden, einfach auswählen könnte. Nur ich habe keine Ahnung wie ich das machen könnte. Bekomme es nur hin, eine einzelne Datei zu laden. Ich hoffe, dass ihr halbwegs verstanden habt, was mein Problem ist. Bin über jeden Rat dankbar.

MFG

toms 15. Mär 2009 15:46

Re: Mehrere Dateien in Memo laden?
 
Hallo

Lade die Datei zuerst in eine StringListe und füge dann deren Text ins Memo so ein

Delphi-Quellcode:
Memo1.Lines.Append(StringListe.Text);

coolio 15. Mär 2009 15:53

Re: Mehrere Dateien in Memo laden?
 
Danke für deine Antwort. Nur könntest du das vielleicht etwas genauer erklären? Sry bin noch ein ziemlicher Anfänger.
Was ist überhaupt eine Stringliste? Und wieso hilft sie mir bei meinem Problem, mehrere Dateien zu laden?

jaenicke 15. Mär 2009 15:55

Re: Mehrere Dateien in Memo laden?
 
Aber vor allem suche vorher in der StringList statt im Memo.

Nebenbei wäre es wohl sinnvoller nur die Zeilen mit den Fundstellen anzuzeigen oder zumindest nur ein paar Zeilen mit dem Fund. Sonst nutzt das ja rein gar nix, wenn die Datei 10.000 Zeilen hat und da irgendwo etwas gefunden wurde. Dann muss man da ja auch erst noch suchen.

Ich selbst habe ein Fundfenster mit der Liste der Funde und der entsprechenden Zeile und bei einem Doppelklick kam man dann an die Stelle des Fundes. Ich glaube ich sollte den Editor doch nochmal überarbeiten und erneut veröffentlichen. Zu Demonstrationszwecken.

Zitat:

Zitat von coolio
Danke für deine Antwort. Nur könntest du das vielleicht etwas genauer erklären? Sry bin noch ein ziemlicher Anfänger.
Was ist überhaupt eine Stringliste? Und wieso hilft sie mir bei meinem Problem, mehrere Dateien zu laden?

Eine TStringList ist so ähnlich wie Lines beim Memo. Nur ohne Memo.
Delphi-Quellcode:
var
  xy: TStringList;
begin
  xy := TStringList.Create;
  xy.LoadFromFile(Pfad + Dateiname...);

  // jetzt hast du die Zeilen in xy wie vorher in Memo.Lines

  //Am Ende aufräumen
  xy.Free;
end;
Mehr dazu siehe Hilfe und ausprobieren. ;-)

coolio 15. Mär 2009 16:08

Re: Mehrere Dateien in Memo laden?
 
OkOk, die Stringliste war schonmal hilfreich. Aber mein eigentliches Problem ist ja, dass ich ein ganzes Verzeichnis mit Dateien, öfnnen will. Sie sollen nacheinander geladen und geprüft werden, ohne dass man jede Datei einzeln auswählen muss. Weiß da niemand was?

jaenicke 15. Mär 2009 16:24

Re: Mehrere Dateien in Memo laden?
 
Dann zeige einen Verzeichnisauswahldialog an und suche alle Dateien im ausgewählten Verzeichnis.
zu 1.: http://www.delphi-forum.de/viewtopic.php?p=160885
zu 2.: http://www.delphipraxis.net/internal...ect.php?t=2464

coolio 16. Mär 2009 16:12

Re: Mehrere Dateien in Memo laden?
 
Habe mich nun doch entschieden, es anders zu machen. Ich möchte mit OpenDialog einfach mehrere Textdateien auswählen und diese dann in ein Memo laden.
Doch wenn ich nun mehrere Dateien ausgewählt habe, werden im Memo nicht alle Textdateien angezeigt, sondern es wird nur die Datei angezeigt, die ich als erstes angeklickt habe. Habe schon viel rumprobiert und bin jetzt bei folgendem Code gelandet:

Delphi-Quellcode:
if OpenDialog1.Execute then
 begin
   for i := 0 to OpenDialog1.Files.Count - 1 do
   begin
   Memo2.Lines.LoadFromFile(OpenDialog1.Files[i])
   end;
end;
Wieso wird immer nur eine Datei angezeigt? :(

jaenicke 16. Mär 2009 16:14

Re: Mehrere Dateien in Memo laden?
 
LoadFromFile lädt nun einmal den Dateiinhalt in das Memo, der alte Inhalt wird dabei überschrieben. Und damit bist du wieder bei einer TStringList zum Laden zuerst.

DeddyH 16. Mär 2009 16:17

Re: Mehrere Dateien in Memo laden?
 
Also ungefähr so:
Delphi-Quellcode:
if OpenDialog1.Execute then
begin
  Liste := TStringlist.Create;
  try
    for i := 0 to OpenDialog1.Files.Count - 1 do
    begin
      Liste.LoadFromFile(OpenDialog1.Files[i]);
      Memo2.Lines.AddStrings(Liste);
    end;
  finally
    Liste.Free;
  end;
end;

coolio 16. Mär 2009 16:22

Re: Mehrere Dateien in Memo laden?
 
Oh man wie dumm von mir. Ja so funktioniert es, Danke.


Edit: Tut mir Leid, dass ich euch schon wieder nerve. :D Nun habe ich ein Problem mit der Suche. Ich habe ja nun mehrere Dateien geladen. In diesen Dateien ist mein Suchwort auch mehrfach enthalten. Doch es wird immer nur angezeigt, dass es einmal vorhanden ist. Ich habe das Gefühl, dass die Stringliste nur bis zu einer bestimmten Stelle durchsucht wird. Hier erstmal mein Code:

Delphi-Quellcode:
if CheckBox7.Checked = true then
begin
  for i := 0 to strli.Count - 1 do
  begin
    if pos(Edit1.Text, strli[i]) > 0 then
    begin
      Memo2.Lines.Add('Eigener Suchbegriff vorhanden')
    end;
end;
strli ist eine Stringliste.

Wie schaffe ich es nun, dass die komplette Stringliste durchsucht wird?

jaenicke 16. Mär 2009 16:50

Re: Mehrere Dateien in Memo laden?
 
Schau dir einmal PosEx an zum Beispiel.

coolio 16. Mär 2009 17:11

Re: Mehrere Dateien in Memo laden?
 
Ja, habe ich auch schon drüber gelesen, doch wenn ich bei Delphi nun PosEx schreibe, meint Delphi "Undeklarierter Bezeichner" :shock: In Delphi 09 sowie in 05 :( Verstehe ich nicht.

jaenicke 16. Mär 2009 17:15

Re: Mehrere Dateien in Memo laden?
 
Wie wäre es mit einem Blick in die Hilfe? Die Funktion ist in der Unit StrUtils enthalten, die gibt es aber glaube ich erst ab Delphi 6.

coolio 16. Mär 2009 17:17

Re: Mehrere Dateien in Memo laden?
 
Habe in die Hilfe geschaut, doch über StrUtils stand da nichts. Naja ich hoffe, dass ich euch nun nicht mehr belästigen muss. ;)
Danke aber. :)
Edit: Hast recht stand doch dabei. :D

jaenicke 16. Mär 2009 17:25

Re: Mehrere Dateien in Memo laden?
 
Eigentlich steht die Datei dabei, wenn du die Funktion gefunden hast: ;-)
http://docs.embarcadero.com/products...ils_PosEx.html
Ist ja auch egal, für Delphi 5 jedenfalls müsstest du einmal schauen, ich habe hier im Forum schon PosEx Implementierungen gesehen.

coolio 16. Mär 2009 18:36

Re: Mehrere Dateien in Memo laden?
 
Also irgendwie weiß ich doch nicht, wie PosEx nun mein Problem lösen soll. Soweit ich das verstanden habe funktioniert PosEx ja so:

PosEx('hallo', 'hallo wie gehts',Offset) Bis zum Offset verstehe ich es ja noch. Nur ich verstehe nicht was ich da nun bei Offset eintragen muss, damit auch die ganze Stringliste durchsucht wird. Habe eig alles probiert aber es will nicht funktionieren. Ich will doch einfach nur alles durchsuchen, das kann doch nich so schwer sein. :( Mein Code sah jetzt am Ende mal so aus:

Delphi-Quellcode:
n := 1;
begin
  for i := 0 to strli.Count - 1 do
  begin
    if posex(Edit1.Text, strli[i], n) > 0 then
    begin
      Memo2.Lines.Add('Eigener Suchbegriff vorhanden')
    end;
  end;
end;

jaenicke 16. Mär 2009 18:43

Re: Mehrere Dateien in Memo laden?
 
Zitat:

Zitat von coolio
Nur ich verstehe nicht was ich da nun bei Offset eintragen muss, damit auch die ganze Stringliste durchsucht wird.

Eine Stelle nach der letzten Fundstelle. Gesucht wird ab der dort angegebenen Position.

coolio 16. Mär 2009 19:16

Re: Mehrere Dateien in Memo laden?
 
Ich schaffe es nicht. Keine Ahnung mehr was ich falsch mache. Sitze da jetzt schon so lange dran, aber ich komme nicht drauf. :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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