Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Newbie!!! Wie kann ich eine Text-Datei auslesen? (https://www.delphipraxis.net/10632-newbie-wie-kann-ich-eine-text-datei-auslesen.html)

mlspider 22. Okt 2003 14:39


Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Hi,

Eins vorab. Ich bin absoluter Anfänger in Sachen Delphi.

Ich betreibe einen Server und biete Audio-Stream OnDemand an. Die eigentlichen Audio-Dateien werden über eine Meta-Datei (ASF-Datei) angesprochen.

Da sich aber die dynamische IP alle 24 Stunden ändert, sind logischer weise meine Meta-Dateien ebenfalls für den Arsch!

Es sind nicht gerade wenige. Wie kann ich nun mit Delphi diese Dateien(die sich mit jedem Text Editor öffnen lassen) auslesen und bis auf die IP filtern???

Wäre über jede Hilfe sehr dankbar!!!!!!!!!

Nalincah 22. Okt 2003 14:53

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
[Edit]Herzlich willkommen in der Delphi-Praxis[/Edit]

Öffnen ist an sich ganz einfach

z.b.
Delphi-Quellcode:
Memo1.Lines.Loadfromfile('C:\test.txt');
filtern ist etwas komplizierter...Steht die IP allein in der zeile?

Die Muhkuh 22. Okt 2003 14:55

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Erstmal Herzlich Willkommen im DP :hi: :dp:


Zitat:

ebenfalls für den Arsch!
:warn: nana sowas hört hier keiner gern!



Zum Thema:

wenn die datei angewählt werden soll durch einen Öffnen dialog dann mach das:

Platziere aus der Registerikarte "Dialoge" eine Opendialog Komponente
Danach doppelclick auf die Form und folgendes Ereignis:

Delphi-Quellcode:
  if Opendialog1.execute then
    Memo1.lines.loadfromfile(Opendialog1.filename) //kann auch ein Richedit/Listbox sein

Wenn die Datei direkt in reingeladen werden soll dann das:
Wieder ein Formcreate:
Delphi-Quellcode:
  Memo1.lines.loadfromfile('c:\Test.txt') //oder d: oder was weiß ich!
Spider

mlspider 22. Okt 2003 15:03

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Erst mal Danke!!!!!!

Hört sich wahnsinnig kompliziert an, aber ich werd's mal versuchen!

Nalincah 22. Okt 2003 15:05

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Das hört sich nur so an...Keine Sorge..Und wenn doch: Frag einfach nochmal

mlspider 22. Okt 2003 15:07

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Danke Basti,

die nächste Frage kommt bestimmt!!!

Nalincah 22. Okt 2003 15:08

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Kein Problem..Tu mir bitte nur einen Gefallen..Nenn mich nicht "Basti" :warn: :kotz:

Sebi :party: wär besser

mlspider 22. Okt 2003 15:11

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Alles klar. Sorry, aber meine Keule heißt auch Sebastian und wir nennen ihm halt "Basti"

mlspider 22. Okt 2003 15:26

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Nein General2003,

die gesamte Zeile lautet:

[CODE]http://jetzt die besagte IP/secure/mp3/der Tietel.mp3

RomanK 22. Okt 2003 15:29

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Hoi, such mal nach Hier im Forum suchenPos
Damit kannst die Position von bestimmten Zeichen in einem String bestimmen

Nalincah 22. Okt 2003 15:34

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Das Problem bei Pos ist aber das du ersten den genauen String wissen musst und zweitens das die länge der IP unterschiedlich sein kann

90.0.0.1 ist z.B. kürzer als 132.43.235.213

Er müsste also nach dem Aufbau suchen


Wie sieht denn z.B. so eine Datei aus wo du die IP ändern willst?

RomanK 22. Okt 2003 15:43

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Hoi,
aber wie wärs wenn er nach dem / nach der IP sucht?
Hier ein Beispiel:
Delphi-Quellcode:
function changeIP(oldadr,newIp:String): String;
var
s: string;
i : Integer;
begin
s := oldadr;
delete(s,1,pos('//',s)+1); // HTTP:// wegschneiden, man geh davon aus dass es immer auf "//" endet
delete(s,1,pos('/',s)-1); // Die IP wegschnippel ( also bis zum nächsten "/")
result := 'http://' + newIP + s; // HTTP davor dann die IP und dann der rest ...
end;
Das ganze wird so aufgerufen:
Delphi-Quellcode:
Button1.Caption := changeIP('http://192.168.168.100/secure/mp3/der Tietel.mp3','192.168.168.230');

mlspider 22. Okt 2003 15:45

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok Sebastian,

ich hab Dir mal so ein Teil hochgeladen. Wobei die Endung natürlich *.asf lautet.

Nalincah 22. Okt 2003 15:48

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Gute Idee...Ich übernehm einfach mal deinen Code und pass das etwas an

Delphi-Quellcode:
function changeIP(oldadr,newIp:String): String;
var
s: string;
i : Integer;
begin
s := oldadr;
delete(s,1,pos('//',s)+1); // HTTP:// wegschneiden, man geh davon aus dass es immer auf "//" endet
delete(s,1,pos('/',s)-1); // Die IP wegschnippel ( also bis zum nächsten "/")
result := 'http://' + newIP + s; // HTTP davor dann die IP und dann der rest ...
end;
Das ganze wird so aufgerufen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender:TObject);
var
i:integer;
begin
  for i := 0 to Memo1.Lines.Count do
    changeIP(Memo1.Lines[i],Edit1.text);
end;
In Edit1 würd dann die neue IP stehen

mlspider 22. Okt 2003 15:49

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Hallo Roman,

die Idee ist nicht schlecht. Allerdings muß immer nach http:// die IP folgen!

Trotzdem Danke

Nalincah 22. Okt 2003 15:52

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Tuts doch:

Delphi-Quellcode:
result := 'http:///' + newIP + s;
newIP ist deine neue IP z.B. 196.65.3.5 und
s ist z.B. "/MP3Files/MyFile.mp3"

Daraus wird:

http:///196.65.3.5/MP3Files/MyFile.mp3

RomanK 22. Okt 2003 15:53

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Hoi mlspider,
was denn sonst? Noch einmal ein / wie bei deinem Beispiel? :wiejetzt:
Dann mach einfach aus:
Delphi-Quellcode:
delete(s,1,pos('//',s)+1);
ein
Delphi-Quellcode:
delete(s,1,pos('//',s)+5);
Ist ja egal ob du auch nen paar Stellen der IP löschst.

RomanK 22. Okt 2003 15:57

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Ach ja, in deinem Fall willst du dir die Datei in deinem Programm ja nicht anschauen,oder?
Daher würde ich eine TStringList benützen. Mehr dazu: Hier im Forum suchenStringList

mlspider 22. Okt 2003 15:57

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Oohahh,

Jetzt hab ich es geschnallt. Hatte eben einen kleinen logischen Denkfehler!!!!

RomanK 22. Okt 2003 16:04

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Na dann hoffe ich, dass wir dir helfen konnten. :thuimb:

mlspider 22. Okt 2003 16:06

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Ja, das habt ihr!!!! Danke!

mlspider 24. Okt 2003 10:20

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Ich habe jetzt den folgenden Code untergebracht:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
 Memo1.lines.loadfromfile('c:\Apache\xampp\htdocs\secure\ram\Charts1.asf')
end;

function changeIP(oldadr,newIp:String): String;
var
s: String;
i : Integer;
begin
s := oldadr;
delete(s,1,pos('//',s)+1); // HTTP:// wegschneiden, man geh davon aus dass es immer auf "//" endet
delete(s,1,pos('/',s)-1); // Die IP wegschnippel ( also bis zum nächsten "/")
result := 'http://' + newIp + s; // HTTP davor dann die IP und dann der rest ...
end;

procedure TForm2.Button2Click(Sender: TObject);
var
i:integer;
begin
 for i := 0 to Memo1.Lines.Count do
    changeIP(Memo1.Lines[i],Edit1.text);
end;

end.
Es funtz nicht! Die Ip wird weder wegeschnitten, noch getauscht.

Wo könnte der Fehler liegen. Oder habe ich vieleicht etwas vergessen?

[edit=Christian Seehase]Delphi-Tags korrigiert. Mfg, Christian Seehase[/edit]

sharkx 24. Okt 2003 10:28

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Den jetzigen code den du hast ist doch folgender ...

Du lädst die datei in ein Memo feld, suchst dort nach der alten IP und änderst diese in die neue IP. richtig?

Aber speichern in die Datei tust du nicht. Das fehlt also noch in deiner Sammlung ;-)

mlspider 24. Okt 2003 10:31

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Das ist schon richtig. Aber wie wird nun das Speichern, also Überschreiben gehandhabt?

Akut-Programming 24. Okt 2003 10:50

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Hi!

Um das Memo indem du die Datei bearbeitet hast zuspeichern, musst du einfach nur folgendes eingeben..

Bsp:
Delphi-Quellcode:
Memo1.Lines.SaveToFile('meine_text_datei.txt');
Ich hoffe das es das ist was du wolltest!?

Gruß,

mlspider 24. Okt 2003 10:54

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Okay, das Speichern funtz, aber der IP-Tausch leider immer noch nicht!

Tom 24. Okt 2003 10:56

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
1) Pfad nich vergessen ...
2) Ist nicht das Problem. Der Rückgabewert der eingesetzten Funktion changeIP wird nicht übernommen/zugewiesen.

mlspider 24. Okt 2003 10:58

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Und wie kann ich das nun wieder beheben. Ich habe von Delph leider noch nicht diiiiiiieeeeee große Ahnung.

RomanK 24. Okt 2003 13:00

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Hoi,
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
Memo1.lines.loadfromfile('c:\Apache\xampp\htdocs\secure\ram\Charts1.asf')
end;

...

procedure TForm2.Button2Click(Sender: TObject);
var
i:integer;
begin
for i := 0 to Memo1.Lines.Count-1 do
    Memo1.lines[i] := changeIP(Memo1.Lines[i],Edit1.text);
end;
Memo1.lines.savetofile('c:\Apache\xampp\htdocs\secure\ram\Charts1.asf');

end.
ungetestet, sollte aber funzen.

mlspider 24. Okt 2003 13:08

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Super!!!! Jetzt funtzt es.

Nur wie kann ich das mit mehreren Dateien mit der gleichen Zeile, also 200 Dateien laden und mit der IP aus Edit1 ersetzen?

RomanK 24. Okt 2003 15:41

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Hoi,
also erstmal brauchst du diese Procedure (aus der DP):
Delphi-Quellcode:
procedure SearchFileExt(const Dir, Ext: String; Files: TStrings);
var
   Found: TSearchRec;
  Sub: String;
  i : Integer;
  Dirs: TStrings; //Store sub-directories
  Finished : Integer; //Result of Finding
begin
   StopSearch := False;
   Dirs := TStringList.Create;
   Finished := FindFirst(Dir + '*.*', 63, Found);
  while (Finished = 0) and not (StopSearch) do
  begin
     //Check if the name is valid.
     if (Found.Name[1] <> '.') then
       begin
    //Check if file is a directory
       if (Found.Attr and faDirectory = faDirectory) then
         Dirs.Add(Dir + Found.Name) //Add to the directories list.
       else
            if Pos(UpperCase(Ext), UpperCase(Found.Name))>0 then
            Files.Add(Dir + Found.Name);
    end;
      Finished := FindNext(Found);
  end;
  //end the search process.
  FindClose(Found);
  //Check if any sub-directories found
   if not StopSearch then
     for i := 0 to Dirs.Count - 1 do
       //If sub-dirs then search agian ~>~>~> on and on, until it is done.
         SearchFileExt(Dirs[i], Ext, Files);

  //Clear the memories.
  Dirs.Free;
end;
Sie such in dem Verzeichnis deiner Exe nach allen afs-Dateien.
Du benötigst noch eine Globale Var für die Procedure:
Delphi-Quellcode:
var
   StopSearch: Boolean;
Dann machst du entweder in FormCreate oder ButtonXClick diese Procedure rein:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
i,x:integer;
files,asffile: TStringList;
begin
Files := TStringList.Create;
SearchFileExt(ExtractFilepath(Application.Exename) + '\', '.afs', Files);
 for i := 0 to files.Count-1 do
  begin
  asffile := TStringlist.Create;
  //memo1.Lines.Add(files.Strings[i]); // war nur eine Hilfe
  asffile.LoadFromFile(files.Strings[i]);
   for x := 0 to asffile.Count-1 do
    begin
    asffile.Strings[x] := changeIP(asffile.Strings[x],edit1.Text);
   end;
  asffile.SaveToFile(files.Strings[i]);
  asffile.Free;
 end;
files.free;
end;
[Edit] Code bearbeitet siehe comment!

mlspider 24. Okt 2003 16:39

Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
 
Oh Gott. Na hoffentlich bekomme ich das hin.

Erst mal danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 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-2025 by Thomas Breitkreuz