![]() |
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!!!!!!!!! |
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:
filtern ist etwas komplizierter...Steht die IP allein in der zeile?
Memo1.Lines.Loadfromfile('C:\test.txt');
|
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Erstmal Herzlich Willkommen im DP :hi: :dp:
Zitat:
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:
Spider
Memo1.lines.loadfromfile('c:\Test.txt') //oder d: oder was weiß ich!
|
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Erst mal Danke!!!!!!
Hört sich wahnsinnig kompliziert an, aber ich werd's mal versuchen! |
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Das hört sich nur so an...Keine Sorge..Und wenn doch: Frag einfach nochmal
|
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Danke Basti,
die nächste Frage kommt bestimmt!!! |
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 |
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"
|
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 |
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
|
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? |
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:
Das ganze wird so aufgerufen:
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;
Delphi-Quellcode:
Button1.Caption := changeIP('http://192.168.168.100/secure/mp3/der Tietel.mp3','192.168.168.230');
|
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. |
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Gute Idee...Ich übernehm einfach mal deinen Code und pass das etwas an
Delphi-Quellcode:
Das ganze wird so aufgerufen:
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;
Delphi-Quellcode:
In Edit1 würd dann die neue IP stehen
procedure TForm1.Button1Click(Sender:TObject);
var i:integer; begin for i := 0 to Memo1.Lines.Count do changeIP(Memo1.Lines[i],Edit1.text); end; |
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 |
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Tuts doch:
Delphi-Quellcode:
newIP ist deine neue IP z.B. 196.65.3.5 und
result := 'http:///' + newIP + s;
s ist z.B. "/MP3Files/MyFile.mp3" Daraus wird: ![]() |
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:
ein
delete(s,1,pos('//',s)+1);
Delphi-Quellcode:
Ist ja egal ob du auch nen paar Stellen der IP löschst.
delete(s,1,pos('//',s)+5);
|
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: ![]() |
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Oohahh,
Jetzt hab ich es geschnallt. Hatte eben einen kleinen logischen Denkfehler!!!! |
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Na dann hoffe ich, dass wir dir helfen konnten. :thuimb:
|
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Ja, das habt ihr!!!! Danke!
|
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Ich habe jetzt den folgenden Code untergebracht:
Delphi-Quellcode:
Es funtz nicht! Die Ip wird weder wegeschnitten, noch getauscht.
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. Wo könnte der Fehler liegen. Oder habe ich vieleicht etwas vergessen? [edit=Christian Seehase]Delphi-Tags korrigiert. Mfg, Christian Seehase[/edit] |
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 ;-) |
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Das ist schon richtig. Aber wie wird nun das Speichern, also Überschreiben gehandhabt?
|
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:
Ich hoffe das es das ist was du wolltest!?
Memo1.Lines.SaveToFile('meine_text_datei.txt');
Gruß, |
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Okay, das Speichern funtz, aber der IP-Tausch leider immer noch nicht!
|
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. |
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.
|
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Hoi,
Delphi-Quellcode:
ungetestet, sollte aber funzen.
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. |
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? |
Re: Newbie!!! Wie kann ich eine Text-Datei auslesen?
Hoi,
also erstmal brauchst du diese Procedure (aus der DP):
Delphi-Quellcode:
Sie such in dem Verzeichnis deiner Exe nach allen afs-Dateien.
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; Du benötigst noch eine Globale Var für die Procedure:
Delphi-Quellcode:
Dann machst du entweder in FormCreate oder ButtonXClick diese Procedure rein:
var
StopSearch: Boolean;
Delphi-Quellcode:
[Edit] Code bearbeitet siehe comment!
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; |
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