Witam,
mam stronke HTML z tabelką wyglada to tak:
XXX | 5:30 | 6:30 | 7:25 | 13:30 | 14:32 | 15:37 |
YYY | 5:31 | 6:31 | 7:26 | 13:31 | 14:33 | 15:38 |
Witam,
mam stronke HTML z tabelką wyglada to tak:
XXX | 5:30 | 6:30 | 7:25 | 13:30 | 14:32 | 15:37 |
YYY | 5:31 | 6:31 | 7:26 | 13:31 | 14:33 | 15:38 |
var
Code, File: TStringList;
q: Integer;
FileName: String;
Started: Boolean;
begin
for q := 0 to Code.Count -1 do begin
if not (Started) and (Pos('<TD class=kol noWrap>', Code[q]) <> 0) then begin
Started := True;
FileName := Code[q]; //Tu musisz wyciagnac tego stringa
File := TStringList.Create;
end;
if (Started) and (Pos('<TD>', Code[q]) <> 0) then
File.Add(Code[q]);
if (Started) and (Pos('<TD class=kol noWrap>', Code[q]) <> 0) then begin
Started := False;
File.SaveToFile(Code[q]); Tu tez musisz wyciagnac stringa
end;
end;
end;
Powinno dzialac…
Witam , tak analizuje ten przykładzik ale nie moge dojść jak i gdzie załadowac plik(tą stronkę HTML) by to wszytsko ruszyło i działało.
a no tak zapomnialem, html'a zaladuj do Code…
ok, może to troche lamersko zabrzmi ale jak chce załadować tego html (mam go wczytanego do Richedita) to sie pojawia błąd ze są nie kompatybilne typy (TstringList i TStrings)
a.Assign(Memo1.Lines);
Chyba cosik takiego...
<font color="blue">[</span><font color="red">ADD</span><font color="blue">]</span>
[code]a[/code] to niby TStringList
nie za bardzo łapie :-| to 'a' to niby co ??
jesli Code.Assign(RockEdit.Lines) nie zadziala to bedziesz musial zrobic to tak:
var
w: Integer;
begin
RichEdit.SimpleText := True; //Nie ejstem pewien, ale to chyba bedzie potrzebne
for w := 0 to RichEdit.Lines.Count -1 do
Code.Add(RichEdit.Lines[w]);
end;
W sumie to u mnie wygląda tak:
var
files, code: TStringList;
q: Integer;
FileName: string;
Started: Boolean;
begin
if Opendialog1.Execute then
begin
Richedit2.Lines.LoadFromFile(Opendialog1.FileName);
Code.Assign(RichEdit1.Lines);
for q := 0 to Code.Count -1 do begin
if not (Started) and (Pos('<TD class=kol noWrap>', Code[q]) <> 0) then begin
Started := True;
FileName := Code[q]; //Tu musisz wyciagnac tego stringa
files := TStringList.Create;
end;
if (Started) and (Pos('<TD>', Code[q]) <> 0) then
files.Add(Code[q]);
if (Started) and (Pos('<TD class=kol noWrap>', Code[q]) <> 0) then begin
Started := False;
files.SaveToFile(Code[q]); //Tu tez musisz wyciagnac stringa
end;
end;
end;
end;
ale wywala 'Access violation at Adres'...
Próbowałem jeszcze ta drugą możliwośc jest to samo... zamaist SimpleText nie miało być plainText ??
var
files, code: TStringList;
q: Integer;
FileName: string;
Started: Boolean;
begin
if Opendialog1.Execute then
begin
Richedit2.Lines.LoadFromFile(Opendialog1.FileName);
Code := TStringList.Create; //!!
Code.Assign(RichEdit1.Lines);
for q := 0 to Code.Count -1 do begin
if not (Started) and (Pos('<TD class=kol noWrap>', Code[q]) <> 0) then begin
Started := True;
FileName := Code[q]; //Tu musisz wyciagnac tego stringa
files := TStringList.Create;
end;
if (Started) and (Pos('<TD>', Code[q]) <> 0) then
files.Add(Code[q]);
if (Started) and (Pos('<TD class=kol noWrap>', Code[q]) <> 0) then begin
Started := False;
files.SaveToFile(Code[q]); //Tu tez musisz wyciagnac stringa
end;
end;
end;
end;
Cannot create file "c:\ <TD class=kol noWrap>YYY"
cos chyba źle ztym obcinaniem stringów wyszło ???
Cannot create file "c:\ <TD class=kol noWrap>YYY"
cos chyba źle ztym obcinaniem stringów wyszło ???
A dziwisz się jak zarówno pod FileName jak i SaveToFile wpisujesz Code[q] zamiast pobrać tylko tę część która Cię interesuje
Jak masz w Code[q] linię
[code]
TwojFileName:='c:'+Copy(Code[q],Length(<TD class=kol noWrap>)+1,Length(Code[q])-Lenght(<'TD>'));
powinno to chyba wyglądać tak:
'c:'+Copy(Code[q],Length('<TD class=kol noWrap>')+1,Length(Code[q])-Length('<TD>'));
ale i tak nie działa !!!!!
raczej do parsowania tej lini uzyj Pos a nie Length, poniewaz na poczatku lini moga znajdowac sie jakies spacje, wiec kodzik bedzie wygladam +/- tak:
'c:'+Copy(Code[q], Pos('<TD class=kol noWrap>', Code[q]) + 21, Length(Code[q]) - [glowa] );
eee a tak w całosci bo już mam dośc zabawy z tymi stringami :-) nie moge sie połapać. Przykłąd rozumiem ale...
... no bo działa ale nie zapisuje zawartości. Dostaje jeden pusty plik :-(
eee atak w całosci bo już mam dośc zabawy z tymi stringami :-) nie moge sie połapać. Przykłąd rozumiem ale...
Atak? Kto? Gdzie? Jak? Bij, zabij!
No to jak masz dość tej zabawy, to przestań się bawić i zajmij się czymś poważnym - słyszałem, że potrzebują robotników do budowy autostrad.
teee bardzo śmieszne, tylko że mi to jest strasznie potrzebne i tego nie mine bo nie rusze dalej !! Wiec moze ktoś pomoże ??
Czyzbys tlumaczyl sie: Nie chce mi sie? ?
Tez nie lubie zabawy ze stringami, ta funkcje pisalem troche dluzej niz Twoj przyklad:
function TMainForm.ParseCmd(Commands: String; Dot: Char): TStringList; //PRZETESTOWANE
var
Cmd: String;
begin
Result := TStringList.Create; //Wyniki beda trzymane w TStringList
Cmd := Commands; //Tymczasowy string
while Pos(Dot, Cmd) <> 0 do begin //Dopuki w komendach znajduje sie dzielnik
Result.Add(Copy(Cmd, 1, Pos(Dot, Cmd) - 1)); //Dodaj do listy kawalek od poczatku do dzielnika
Cmd := Copy(Cmd, Pos(Dot, Cmd) + 1, Length(Cmd) - Pos(Dot, Cmd)); //Usun ze stringa dodany kawalek
end;
if Length(Cmd) > 0 then Result.Add(Cmd); //Jezeli za odtatnim dzielnikiem cos zostalo, umiesc to na liscie
end;
Ale sie oplacalo, urzywam jej wszedzie. Niech nikt nie mysli, ze odbiegam od tematu, przeanalizuj ta funkcje i zastosuj do Twojego przykladu. Gdyby ktos nie wiedzial to funkcja rozdziela Stringa na TStringList, przecinajac go w 'Dot'
<&---
Znalazlem dosc glupi blad w tym wczesniejszym przykladzie:
zamiast files.SaveToFile(Code[q]); ma byc files.SaveToFile(FileName);