![]() |
teilstring ändern(teil in einem html code ändern)
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 |
Re: teilstring ändern(teil in einem html code ändern)
Hallo,
schau Dir doch mal ![]() Außerdem gab's neulich eine ähnliche Frage. Dabei ist ![]() Gruß xaromz |
Re: teilstring ändern(teil in einem html code ändern)
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:
Mit der kannst du dann die Dateien in einem Verzeichnis so ermitteln:
// 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;
Delphi-Quellcode:
Die Routine zum Anpassen der Verzeichnisstufe könnte dann so aussehen:
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;
Delphi-Quellcode:
Getippt und nicht getestet...
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; Freundliche Grüße vom marabu |
Re: teilstring ändern(teil in einem html code ändern)
hallo marabu
danke danke danke für deine hilfe :thumb: habe es noch nicht ganz durchgetestet aber ich denke damit komme ich weiter. gruß rennkuckuck |
Re: teilstring ändern(teil in einem html code ändern)
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 |
Re: teilstring ändern(teil in einem html code ändern)
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 |
Re: teilstring ändern(teil in einem html code ändern)
Liste der Anhänge anzeigen (Anzahl: 1)
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) |
Re: teilstring ändern(teil in einem html code ändern)
Zitat:
marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 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