Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bestimmte Bereiche aus Datei auslesen und in neue schreiben (https://www.delphipraxis.net/42835-bestimmte-bereiche-aus-datei-auslesen-und-neue-schreiben.html)

Kernel32.DLL 30. Mär 2005 10:14

Re: Bestimmte Bereiche aus Datei auslesen und in neue schrei
 
Zitat:

Zitat von Wuaegner
Was für eine Fehlermeldung?

Wahrscheinlich eine hübsche AV, weil er, wie anfangs bereits gesagt, die TStringlists, die er hat, freigibt.

@Oli.1010:

Also, nimm erstmal das

Delphi-Quellcode:
dateiliste.free;
inhalt.free;
aus der Schleife und setz es vor dein letztes "end;".

Ich kann nicht hellsehen und weiß auch nicht, welchen Wert "inhalt.text" zur Laufzeit hat.
Delphi hat einen hübschen Debugger (wenn ich doch bloß wüsste, welche Delphi - Version du hast...). Benutze den doch einfach mal. Mich würde nämlich zu gerne interessieren, was in "inhalt.text" drinnesteht.

mfg
Daniel

[Edit 1] Narf... Das Ding hieß "inhalt.text", nicht "inhalt.txt" :wall: [/Edit 1]
[Edit 2] Huch... Die beiden Posts vor mir habe ich ja gar net gesehen... [/Edit 2]

Khabarakh 30. Mär 2005 10:31

Re: Bestimmte Bereiche aus Datei auslesen und in neue schrei
 
:roll: :roll: :roll:
Zitat:

kann aber nach durchlaufen des Programms keine Veränderungen an der *.html-datei einsehen.
Genial, der Code macht meistens nicht das, was er soll, wenn eine Exception ausgelöst wird, was uns vielleicht nicht verschwiegen werden sollte.
Probier also mal das:
Delphi-Quellcode:
for i:=0 to dateiliste.Count-1 do
begin
  inhalt.LoadFromFile(dateiliste[i]);
  if Pos(ComboBox1.Text, inhalt.Text) > 0 then //statt inhalt[0]
    inhalt.Text := copy(inhalt.text,0,Pos('',inhalt.text)-1)+copy(inhalt.text,Pos('',inhalt.text)+21,Length(inhalt.text));
  // hier verstehe ich gar nichts, "+21" ? Das sieht so aus, als ob du alles außer den begin-end Teil kopierst
  AssignFile(f, dateiliste[i]); //das und folgendes sollte wohl auch in den if-Zweig
  Rewrite(f);
  Writeln(f, '<html>');
  Writeln(f, '<head>');
  Writeln(f, '<title>test</title> ');
  Writeln(f, '</head>');
  Writeln(f, '<body>');
  Writeln(f, '');
  Writeln(f, ' '+inhalt.Text+' ');
  Writeln(f, '');
  Writeln(f, '</body>');
  Writeln(f, '</html>');
  closeFile(f);
  ShowMessage(' in' +dateiliste[i]+ 'erfolgreich überarbeitet.') ; //statt +Combobox1.Text+
  end;      //wichtig, folgendes gehört nicht mehr zur Schleife
dateiliste.free;
inhalt.free;
end;
[edit] Ich schreibe zu langsam :mrgreen: .

Kernel32.DLL 30. Mär 2005 10:45

Re: Bestimmte Bereiche aus Datei auslesen und in neue schrei
 
Zitat:

Zitat von Wuaegner
Delphi-Quellcode:
GetFilesInDirectory
hast du selber geschrieben oder? Wie sieht die aus?

So:

Delphi-Quellcode:
procedure GetFilesInDirectory(Directory: String; const Mask: String;
                              List: TStrings;
                              WithSubDirs, ClearList: Boolean);

procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
begin
  if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) = 0 then try
    repeat
      List.Add(Directory + SR.Name)
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;

  if WithSubDirs then begin
    if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
      repeat
        if (SR.Attr = faDirectory) and
           (SR.Name <> '.') and (SR.Name <> '..') then
          ScanDir(Directory + SR.Name + '\');
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;

begin
  List.BeginUpdate;
  try
    if ClearList then
      List.Clear;
    if Directory = '' then Exit;
    if Directory[Length(Directory)] <> '\' then
      Directory := Directory + '\';
    ScanDir(Directory);
  finally
    List.EndUpdate;
  end;
end;
Zu finden auf
www.dsdt.info (im EDH)

Oli.1010 30. Mär 2005 14:27

Re: Bestimmte Bereiche aus Datei auslesen und in neue schrei
 
Mein GetFilesInDirectory
Delphi-Quellcode:
procedure GetFilesInDirectory(ADirectory: string; AMask: String; AList: TStrings; ARekursiv: Boolean);
var
  SR: TSearchRec;
begin
  if (ADirectory<>'') and (ADirectory[length(ADirectory)]<>'\') then
    ADirectory:=ADirectory+'\';

  if (FindFirst(ADirectory+AMask,faAnyFile-faDirectory,SR)=0) then begin
    repeat
      if (SR.Name<>'.') and (SR.Name<>'..') and (SR.Attr<>faDirectory) then
          AList.Add(ADirectory+SR.Name)
    until FindNext(SR)<>0;
    FindClose(SR);
  end;

  if ARekursiv then
    if (FindFirst(ADirectory+'*.*',faDirectory,SR)=0) then
    begin
      repeat
        if (SR.Name<>'.') and (SR.Name<>'..') then
          GetFilesInDirectory(ADirectory+SR.Name,AMask,AList,True);
      until FindNext(SR)<>0;
      FindClose(SR);
    end;
end;
Habe jetzt
Delphi-Quellcode:
dateiliste.free;
inhalt.free;
aus der Schleife herausgenommen.
Jetzt führt er Änderungen an den HTML-Dateien durch, aber wie Khabarakh schon sagte, kopiert er alles bis auf den Teil den ich eigentlich nur kopiert haben möchte. :?
Aber ich will ja nur den teil zwischen den und kopieren?

Oli.1010 30. Mär 2005 14:58

Re: Bestimmte Bereiche aus Datei auslesen und in neue schrei
 
jemand ne idee wie ich den spieß umdrehen könnte?

Khabarakh 30. Mär 2005 18:20

Re: Bestimmte Bereiche aus Datei auslesen und in neue schrei
 
Delphi-Quellcode:
inhalt.Text := Copy(inhalt.text, Pos('', inhalt.text)), Copy(inhalt.text, Pos('', inhalt.text) + Length(''));
Sollte stimmen.

Oli.1010 30. Mär 2005 19:09

Re: Bestimmte Bereiche aus Datei auslesen und in neue schrei
 
da bringt er jetzt leider folgende Fehlermeldung beim Kompilieren:
"Nicht genügend wirkliche Parameter"

Khabarakh 30. Mär 2005 20:53

Re: Bestimmte Bereiche aus Datei auslesen und in neue schrei
 
Hups.
Delphi-Quellcode:
inhalt.Text := Copy(inhalt.text, Pos('', inhalt.text), Pos('', inhalt.text) + Length(''));

Oli.1010 30. Mär 2005 21:12

Re: Bestimmte Bereiche aus Datei auslesen und in neue schrei
 
hey vielen Dank für die schnelle Hilfe. :thumb:

Jetzt wir zwar der Text der zwischen den beiden markern steht kopiert und in die anderen html-dateien übertragen, aber die 2 marker stehen dann auch noch in den neuen seiten außerdem wird der quelltext hinter auch kopiert (genau 179 zeichen).

Gibt es ne möglichkeit nur die zeichen zwischen den beiden markern und zu kopieren?

Khabarakh 30. Mär 2005 22:03

Re: Bestimmte Bereiche aus Datei auslesen und in neue schrei
 
Schon wieder hups. Copy nimmt nicht Anfang und Ende, sondern Anfang und Länge als Parameter an:
Delphi-Quellcode:
inhalt.Text := Copy(inhalt.text, Pos('', inhalt.text) + Length(''), Pos('', inhalt.text) - Pos('', inhalt.text) - Length(''));
Oder etwas übersichtlicher:
Delphi-Quellcode:
const KeyWord1 = '';
     KeyWord2 = '';
var NavigationBegin: Integer;
begin
[...]
  NavigationBegin := Pos(KeyWord1, inhalt.Text) + Length(KeyWord1);
  inhalt.Text := Copy(inhalt.Text, NavigationBegin, Pos(KeyWord2, inhalt.Text) - NavigationBegin);


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr.
Seite 3 von 4     123 4      

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