Ĺadny brzuch
Mi ten kod nie działa. Chciałbym otworzyć plik 'index.html' i zamienic w nim np old[0] na new[0] i tak po kolei. Co robię źle ?
begin old[0] := '<!---top-->'; old[1] := '<!---menu-->'; old[2] := '<!---reklamy-->'; old[3] := '<!---stopka-->'; old[4] := '<!---meta-->'; new[0] := SynMemo1.Text; new[1] := SynMemo2.Text; new[2] := SynMemo3.Text; new[3] := SynMemo4.Text; new[4] := SynMemo5.Text; assignfile(m, nav); try reset(m); readln(m, g); for i := 0 to 4 do begin StringReplace(g, old[i], new[i], [rfReplaceAll]); end; finally closefile(m); end; end;
Zakładam, że dany plik index.htm nie ma jednej linijki.
Opis działania Twojego programu:
1.Zmienne.
2.Otwiera plik i wczytuje pierwszą linikę.(temu nie działa)
3.Podmienia old na new
4.Konczy prace z plikami.
Najlepiej stworz zmienna TStringList. Kod:
var l: TStringList; {przypisanie zmiennym old i new wartosci} l:=TStringList.create; while not eof(m) do begin ReadLn(m ,g); l.Items.Add(g); end; for i:=0 to 4 do begin StringReplace(l.text, old[i], new[i], [rfReplaceAll]); end; {zwolnij plik itp}
Powinno działać ale nie wiem bo pisalem kod na szybko.
nie robisz nic z wynikiem StringReplace. Musisz go gdzies przypisac :)
var s: string; i: integer; begin with TStringList.Create() do begin LoadFromFile('index.html'); s:= text; Free(); end; for i:= low(old) to high(old) do s:= stringreplace(s, old[i], new[i], [rfReplaceAll]);
w s masz teraz zawartosc index.html ale z pozamienianymi stringami :)
a jak mam zapisać do pliku index.html ??
with TStringList.Create() do begin SaveToFile('index.html'); s := text; end; ???
a jak mam zapisać do pliku index.html ??
with TStringList.Create() do begin SaveToFile('index.html'); s := text; end; ???
odwrotnie. musisz do text przypisac s :)
Czy mam ten kod w pętli stosowac czy poza ?
for i:= low(old) to high(old) do begin with TStringList.Create() do begin SaveToFile(nav); text := s; end; s := stringreplace(s, old[i], new[i], [rfReplaceAll]); end;
poza. inaczej bedziesz co chwile zapisywal do pliku
mógłbyś mi to napisać? Bo ja już nie wiem jak.... nie wychodzi mi
with TStringList.Create() do begin LoadFromFile(nav); s:= text; Free(); end; l:= TStringList.Create; for i:= low(old) to high(old) do begin l.Text := stringreplace(s, old[i], new[i], [rfReplaceAll]); end; L.SaveToFile(nav); end;
Użytkownik Pre'side edytował ten post 01 listopad 2006, 17:24
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
begin old[0] := '<!---top-->'; old[1] := '<!---menu-->'; old[2] := '<!---reklamy-->'; old[3] := '<!---stopka-->'; old[4] := '<!---meta-->'; new[0] := SynMemo1.Text; new[1] := SynMemo2.Text; new[2] := SynMemo3.Text; new[3] := SynMemo4.Text; new[4] := SynMemo5.Text; assignfile(m, nav); try reset(m); readln(m, g); for i := 0 to 4 do begin StringReplace(g, old[i], new[i], [rfReplaceAll]); end; finally closefile(m); end; end;
Zakładam, że dany plik index.htm nie ma jednej linijki.
Opis działania Twojego programu:
1.Zmienne.
2.Otwiera plik i wczytuje pierwszą linikę.(temu nie działa)
3.Podmienia old na new
4.Konczy prace z plikami.
Najlepiej stworz zmienna TStringList. Kod:
var l: TStringList; {przypisanie zmiennym old i new wartosci} l:=TStringList.create; while not eof(m) do begin ReadLn(m ,g); l.Items.Add(g); end; for i:=0 to 4 do begin StringReplace(l.text, old[i], new[i], [rfReplaceAll]); end; {zwolnij plik itp}
Powinno działać ale nie wiem bo pisalem kod na szybko.
nie robisz nic z wynikiem StringReplace. Musisz go gdzies przypisac :)
var s: string; i: integer; begin with TStringList.Create() do begin LoadFromFile('index.html'); s:= text; Free(); end; for i:= low(old) to high(old) do s:= stringreplace(s, old[i], new[i], [rfReplaceAll]);
w s masz teraz zawartosc index.html ale z pozamienianymi stringami :)
a jak mam zapisać do pliku index.html ??
with TStringList.Create() do begin SaveToFile('index.html'); s := text; end; ???
a jak mam zapisać do pliku index.html ??
with TStringList.Create() do begin SaveToFile('index.html'); s := text; end; ???
odwrotnie. musisz do text przypisac s :)
Czy mam ten kod w pętli stosowac czy poza ?
for i:= low(old) to high(old) do begin with TStringList.Create() do begin SaveToFile(nav); text := s; end; s := stringreplace(s, old[i], new[i], [rfReplaceAll]); end;
poza. inaczej bedziesz co chwile zapisywal do pliku
mógłbyś mi to napisać? Bo ja już nie wiem jak.... nie wychodzi mi
with TStringList.Create() do begin LoadFromFile(nav); s:= text; Free(); end; l:= TStringList.Create; for i:= low(old) to high(old) do begin l.Text := stringreplace(s, old[i], new[i], [rfReplaceAll]); end; L.SaveToFile(nav); end;
Użytkownik Pre'side edytował ten post 01 listopad 2006, 17:24