Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [Help] Textfile bearbeiten :( (https://www.delphipraxis.net/35042-%5Bhelp%5D-textfile-bearbeiten.html)

delphi_libero 1. Dez 2004 19:21


[Help] Textfile bearbeiten :(
 
Hi leudz. ich hab folgendes prob (wusste jetzt net genau in welche kategorie ich das packen sollte sry) und zwar habe ich eine bzw. mehrere textfiles in denen url's stehen. die sind aufgebaut wie folgt:
Delphi-Quellcode:
http://www.host.com/index.html
[url]http://www.host.com/news.html[/url]
[url]http://www.host.com/logo.jpg[/url]
[url]http://www.host.com/banner.jpg[/url]
..usw
also jeweils eine url pro zeile. jetzt meine frage. ich würde diese textfile gerne einlesen (in listview, stringgrid.. whatever) und an jede zeile 2 vordefinierte namen (jeweils der dateiname der url extrahiert + änderung der dateiendung) anhängen die jeweils durch ein = getrennt werden. bsp.:
Delphi-Quellcode:
http://www.host.com/index.html=index.seite=index.seite
[url]http://www.host.com/news.html=news.seite=news.seite[/url]
[url]http://www.host.com/logo.jpg=logo.bild=logo.bild[/url]
[url]http://www.host.com/banner.jpg=banner.bild=banner.bild[/url]
...usw
und dann das ganze abspeichern. ist das irgendwie möglich? ich hatte da so im kopf das in nen gitter einzulesen und dann zwei spalten anzuhängen in denen dann die namen extrahiert und geändert werden. nur weis ich garnet wie ich das realisieren könnte. und dann ist jede txt file andere größe. mal 5 zeilen mal 10 usw. also steht vorher noch nicht fest. also nich statisch machbar wohl.
bin für jeden hinweis dankbar ;) vieleicht gibts sowas ja auch schon.
greez

Luckie 1. Dez 2004 19:26

Re: Textfile bearbeiten :(
 
Erstmal würde ich die Datei in eine Delphi-Referenz durchsuchenTStringListe laden.

Dann such dir von hinten den ersten "/". Kopier dir die Zeichenfolge mit Delphi-Referenz durchsuchencopy raus. Mit Delphi-Referenz durchsuchenChangeFileExt kannst du dann die Dateiendung ändern. Strings aneinanderhängen kann man mit dem "+" Operator.

delphi_libero 1. Dez 2004 19:31

Re: Textfile bearbeiten :(
 
ah danke sone step-by-stepanweisung brauchte ich. hoffe ich krieg das hin freu mich schon. danke erstmal ;)

Edit:

soo jetzt hab ich schonmal die stringlist created und die textfile geladen. nur weiss ich leider nicht wie ich von hinten nach "/" suchen kann. vieleicht mit Find()/Indexof() ? weis leider net was ich da genau für paras angeben muss. hoffe kannst mir aushelfen.

bisher:
Delphi-Quellcode:
var links: TStringList;
begin
Try
Opendialog1.Execute;
Edit1.Text := Opendialog1.FileName;
links:=TStringList.Create;
links.LoadFromFile(Edit1.Text);
Except
end;
end;

delphi_libero 2. Dez 2004 00:28

Re: [Help] Textfile bearbeiten :(
 
so habe code nochmal überarbeitet damit mir auch gleich die zeilen ausgelesen werden. allerdings weis ich immer noch net wie ich den dateinamen extrahieren kann und dann noch umbenennen und das ganze ans original hänge wie beschrieben :/ hoffe da gibts ne möglichkeit.
Delphi-Quellcode:
var
  Form1: TForm1;
  links: TStringList; // stringlistname

....etc.

begin
Try
Opendialog1.Execute; //Öffnen-Dialog aufrufen
Edit1.Text := Opendialog1.FileName; //Pfad der ausgewählten Datei anzeigen
links:=TStringList.Create; //Stringliste erzeugen
links.LoadFromFile(Edit1.Text); // Datei einlesen in stringliste
LabeledEdit1.Text := IntToStr(links.count); // Anzahl der gefunden Zeilen anzeigen
Except
end;
end;

s14 2. Dez 2004 07:11

Re: [Help] Textfile bearbeiten :(
 
Hallo,
Du musst die Zeilen einzeln bearbeiten. Hab das mal mit einer Memo Komponente demonstriert in der eine Liste der URLs steht.
Geht natürlich mit einer Stringlist genauso :wink:

Delphi-Quellcode:
function GetFilename(str: String): String;
var
  i : Integer;
begin
  for i := Length(str) downto 1 do
    if str[i] = '/' then
    begin
      Result := ChangeFileExt(Copy(str, i + 1, max_path), '');
      Break;
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i : Integer;
begin
  for i := 0 to memo1.Lines.Count -1 do
    memo1.Lines[i] := memo1.Lines[i] + '=' + GetFilename(memo1.Lines[i]);
end;

delphi_libero 2. Dez 2004 18:45

Re: [Help] Textfile bearbeiten :(
 
ahh okay jetzt sollte ich schonmal weiterkommen ;) danke. meld mich wenn ichs geschafft hab.

delphi_libero 2. Dez 2004 20:01

Re: [Help] Textfile bearbeiten :(
 
klasse, soweit hab ich das hinbekommen. jetzt würd ich noch gerne eine option hinzufügen, und zwar soll bei den textdateien die letzte zeile als endung immer '.fin' lauten wenn checkbox1 aktiviert ist. ist das irgendwie machbar die letzte zeile anzusprechen ?
irgendwie mit "if checkbox1.State = true" dann ändere dateiendung der letzten zeile zu .fin
danke schonmal für die hilfen!

IngoD7 3. Dez 2004 12:46

Re: [Help] Textfile bearbeiten :(
 
Zitat:

Zitat von delphi_libero
und zwar soll bei den textdateien die letzte zeile als endung immer '.fin' lauten

Wo jetzt genau? In der Datei oder die Dateiendung selber? Im Memo oder in einer StringList?

Hilft dir die Methode Add?

fkerber 3. Dez 2004 12:48

Re: [Help] Textfile bearbeiten :(
 
Hi!

Die Abfrage wg. der Checkbox müsste lauten:
Delphi-Quellcode:
if checkbox1.Checked then //angekreuzt
Ciao Frederic

MaBuSE 3. Dez 2004 13:03

Re: [Help] Textfile bearbeiten :(
 
Zitat:

Zitat von delphi_libero
ist das irgendwie machbar die letzte zeile anzusprechen ?

Die Letzte Zeile kann ganz einfach mit
Delphi-Quellcode:
  s := Memo1.Lines[Memo1.Lines.Count - 1];
ermittelt werden.

Beispiel:
Delphi-Quellcode:
   if CheckBox1.Checked and
      RightStr( Memo1.Lines[Memo1.Lines.Count - 1], 4) <> '.fin' then
   begin
     Memo1.Lines[Memo1.Lines.Count - 1] := Memo1.Lines[Memo1.Lines.Count - 1] + '.fin'
   end;
RightStr ist in der Unit StrUtils zu finden.

Falls Deine Frage beantwortet ist, nicht vergessen mit dem http://www.delphipraxis.net/template...t_answered.gif - Button oben auf der Seite die Frage als beantwortet zu markieren.
Danke


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