AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi teilstring ändern(teil in einem html code ändern)
Thema durchsuchen
Ansicht
Themen-Optionen

teilstring ändern(teil in einem html code ändern)

Ein Thema von rennkuckuck · begonnen am 8. Mär 2006 · letzter Beitrag vom 9. Mär 2006
Antwort Antwort
rennkuckuck

Registriert seit: 26. Okt 2005
8 Beiträge
 
Delphi 2005 Personal
 
#1

teilstring ändern(teil in einem html code ändern)

  Alt 8. Mär 2006, 10:48
hallo
ich habe so 200 *.html files.
in jedem html file sind bilder drinnen. nun hat sich der pfad geändert wo die bilder abgelegt sind.
früher war es /gif/
und jetzt ist es /gifs/
wie kann ich nun in jeder datei suchen wo ich /gif/ finde und das durch /gifs/ ersetzen.
habe schon mal angefangen aber ich weis nicht wie ich sage dass ich nur den bestimmten teil des strings meine.
hier mal mein quelltext:

Delphi-Quellcode:
 SetLength(StrA,0);
 FileIn := '*.html';
 StrA := '/gif/';
 StrA := UpperCase(StrA);
 rline:='';


 AssignFile(fr, FileIn);
 Reset(fr);
 
 while not eof(fr) do
   begin

    readln(fr, rline);
    rline := UpperCase(rline);
    rline := Trim(rline);
    Found := True;

    For I := 1 to (Length(StrA)-1) Do
    Begin
      If Pos(StrA[I],rline) = 0 Then
{....wie spreche ich hier den teilstring an ....also genau das stück was ersetzt werden soll}                      
         Begin
          Found := False;
          Break;
         End;
     End; {For I}

   If Found then
    begin
{.....wie ersetzt man das dann}
    end;

  CloseFile(fr);

danke schonmal für antworten
ich hoffe das thema passt in das forum
gruß rennkuckuck
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: teilstring ändern(teil in einem html code ändern)

  Alt 8. Mär 2006, 11:22
Hallo,

schau Dir doch mal Delphi-Referenz durchsuchenStringReplace an.
Außerdem gab's neulich eine ähnliche Frage. Dabei ist das hier rausgekommen.

Gruß
xaromz
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: teilstring ändern(teil in einem html code ändern)

  Alt 8. Mär 2006, 13:21
Herzlich willkommen in der Delphi-PRAXiS, rennkuckuck.

Du kannst immer nur eine Datei mit AssignFile zuweisen. Um wildcards aufzulösen brauchst du eine eigene Funktion:

Delphi-Quellcode:
// uses FileCtrl

function GetFiles(fileSpec: String; s: TStrings = nil): Integer;
begin
  with TFileListBox.CreateParented(HWND(-3)) do
  try
    Mask := ExtractFileName(fileSpec);
    Directory := ExtractFilePath(fileSpec);
    FileType := [ftArchive];
    Result := Items.Count;
    if Assigned(s) then
      s.Assign(Items);
  finally
    Free;
  end;
end;
Mit der kannst du dann die Dateien in einem Verzeichnis so ermitteln:

Delphi-Quellcode:
var
  s: TStrings;
  fileCount: Integer;
begin
  s: TStringList.Create;
  fileCount := GetFiles('c:\inetpub\wwwroot\demo\*.html', s);
  for i := 0 to Pred(s.Count) do
    AdjustLinks(s[i], 'gif', 'gifs');
  s.Free;
end;
Die Routine zum Anpassen der Verzeichnisstufe könnte dann so aussehen:

Delphi-Quellcode:
procedure AdjustLinks(fn: TFileName; dirOld, dirNew: String);
var
  line: String;
  s: TStrings;
  i, iPos: Integer;
begin
  s := TStringList.Create;
  s.LoadFromFile(fn);

  dirOld := '/' + Uppercase(dirOld) + '/';
  dirNew := '/' + dirNew + '/';

  for i := 0 to Pred(s.Count) do
    repeat
      iPos := Pos(dirOld, Uppercase(s[i]));
      if iPos > 0 then
      begin
        line := s[i];
        Delete(line, iPos, Length(oldDir));
        Insert(newDir, line, iPos);
        s[i] := line;
      end; // hat gefehlt...
    until iPos = 0;
  s.SaveToFile(fn);
  s.Free;
end;
Getippt und nicht getestet...

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
rennkuckuck

Registriert seit: 26. Okt 2005
8 Beiträge
 
Delphi 2005 Personal
 
#4

Re: teilstring ändern(teil in einem html code ändern)

  Alt 8. Mär 2006, 14:01
hallo marabu
danke danke danke für deine hilfe
habe es noch nicht ganz durchgetestet aber ich denke damit komme ich weiter.
gruß rennkuckuck
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: teilstring ändern(teil in einem html code ändern)

  Alt 8. Mär 2006, 16:00
Ich will deine Euphorie jetzt nicht bremsen, aber du sollst wissen, dass bei deinem Ansatz jedes Vorkommen des Strings '/gif/' ausgetauscht wird - eventuell auch an Stellen, an denen das nicht gewünscht ist. Um dieses Problem in den Griff zu bekommen kann man einen Parser einsetzen, der nur das Attribut src des img tag betrachtet. Wenn du über dieses Problem stolpern solltest, dann melde dich und dir wird geholfen.

marabu
  Mit Zitat antworten Zitat
rennkuckuck

Registriert seit: 26. Okt 2005
8 Beiträge
 
Delphi 2005 Personal
 
#6

Re: teilstring ändern(teil in einem html code ändern)

  Alt 9. Mär 2006, 14:53
Hallo marabu
danke schonmal für deine antwort.
ich denke das wird kein problem dass er alles ersetzt wo /gif/ steht.
allerdings habe ich noch ein prob mit deinem quelltext.
was hast du denn in uses stehen?
weil bei mir wird jede menge in deinem quelltext rot unterstrichen? z.b. TFileListBox.CreateParented...wie wenn er es nicht kennt.
muss ich das noch irgentwie deklarieren oder so? ich kenne mich leider mit TList und TStringList nicht so gut aus....habe mich schonmal damit beschäftigt und habe es leider nicht so richtig kapiert
viele grüße rennkuckuck
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: teilstring ändern(teil in einem html code ändern)

  Alt 9. Mär 2006, 15:00
Ich habe da mal ein Programm gemacht, mit dem du sowas machen kannst
(Nicht extra für dich ^^)

Es kann auch reguläre Ausdrücke benutzen ... (nach PCRE-Syntax)
Angehängte Dateien
Dateityp: zip bin_205.zip (436,7 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: teilstring ändern(teil in einem html code ändern)

  Alt 9. Mär 2006, 15:38
Zitat von rennkuckuck:
was hast du denn in uses stehen?
TStringList stammt aus der Unit Classes, TFileListBox aus der Unit FileCtrl.

marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 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