Tabelki w HTML -> plik txt

0

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
0
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…

0

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.

0

a no tak zapomnialem, html'a zaladuj do Code…

0

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)

0
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

0

nie za bardzo łapie :-| to 'a' to niby co ??

0

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;
0

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 ??

0
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; 
0

Cannot create file "c:\ <TD class=kol noWrap>YYY"
cos chyba źle ztym obcinaniem stringów wyszło ???

0

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]

XXX [/code] to musisz pobrać TwojFileName:='c:'+Copy(Code[q],Length()+1,Length(Code[q])-Lenght(<'TD>'));
0

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 !!!!!

0

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] );

0

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 :-(

0

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.

0

teee bardzo śmieszne, tylko że mi to jest strasznie potrzebne i tego nie mine bo nie rusze dalej !! Wiec moze ktoś pomoże ??

0

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);

1 użytkowników online, w tym zalogowanych: 0, gości: 1