Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Posex und kein Plan :-( (https://www.delphipraxis.net/43503-posex-und-kein-plan.html)

jolomino 5. Apr 2005 01:08


Posex und kein Plan :-(
 
hallo,
ich habe einen html-code, wo ich eine bestimmte zeile heraus ziehen möchte. habe das forum schon durchsucht und bin auf posex gestossen. doch leider bekomme ich es nicht hin, den code zu parsen.
wäre echt nett, wenn mir der ein oder andere etwas helfen könnte.

also ein auschnitt aus dem html-code sieht so aus:

Code:
<input type=checkbox name=".docs" value="klausi pac.text">
 
                    [img]http://myurl.de/i/dd/for.gif[/img]
              </td>
  <td align=left valign=middle>
  <font face="Arial,Helvetica" size=-1>

                  <a href="http://myurl.de/dd/33fd3dff/dd/klausi+pac.text?DUcKdUCBBkzOTnEq">
also alles was einmalig ist, ist <input type=checkbox name=".docs" value="

klausi pac.text ist das einzige was mir bekannt ist.
dieser html-code wiederholt sich 3-4mal, wobei der aufbau immer gleich ist, nur steht das nächste mal nicht klausi pac.text sonder z.b. petra pac.text.
ich brauch nun aber die url, die etwas tiefer steht, damit ich diese downloaden kann. wie in diesem fall von klausi pac.text.
http://myurl.de/dd/33fd3dff/dd/klausi+pac.text?DUcKdUCBBkzOTnEq

wenn ich diese dann downgeloadet habe, würde ich den gleichen schritt halt nochmal durchlaufen lassen, um evtl. petra pac.text zu schnappen.
kann mir da mal einer anhand eines beispieles erklären, wie ich diesen bewerkstellige?

gruss jolomino

Pseudemys Nelsoni 5. Apr 2005 01:45

Re: Posex und kein Plan :-(
 
Moin,

ich versteh dein Problem nicht ganz, du kannst doch einfach bis:

Zitat:

<input type=checkbox name=".docs" value="
löschen (Delete()) und dann von 1 bis " -1 kopieren und hast die doc datei.

Das machst du in einer Schleife.

jolomino 5. Apr 2005 02:14

Re: Posex und kein Plan :-(
 
Zitat:

Zitat von Pseudemys Nelsoni
Moin,

ich versteh dein Problem nicht ganz, du kannst doch einfach bis:

Zitat:

<input type=checkbox name=".docs" value="
löschen (Delete()) und dann von 1 bis " -1 kopieren und hast die doc datei.

Das machst du in einer Schleife.

hehe, fürn anfänger ist das ein problem. weil ich nicht im geringsten weiss wo ich ansetzen soll...

naja, trotzdem danke, werde mal mit deinem tipp versuchen was auf die beine zu stellen :-) oder ich finde doch noch was im forum.

gruss jolomino

Pseudemys Nelsoni 5. Apr 2005 02:17

Re: Posex und kein Plan :-(
 
Gib mir die komplette html datei bzw den text daraus, dann schreib ichs dir, aber wenn das nur so ein teil ist kann ich das leider nicht :\

jolomino 5. Apr 2005 06:17

Re: Posex und kein Plan :-(
 
naja, das könnte ich, aber ich möchte es ja alleine schaffen. kleine hilfen sind ok, aber wenn du mir das alles fertig machen willst, dann hab ich daraus nichts gelernt.
ist es denn nicht möglich, nach dem namen klausi+pac.text? zu suchen und alles bis zu den beiden " zu selektieren? ich hab mir das nämlich eben nochmal angeschaut, klausi+pac.text? kommt in der seite auch nur einmal vor.oder das man nach <input type=checkbox name=".docs" value="klausi pac.text"> sucht und beim nächsten <a href="http://myurl.de/dd/33fd3dff/dd/klausi+pac.text?DUcKdUCBBkzOTnEq"> der link selektiert wird.

gruss jolomino

Pseudemys Nelsoni 5. Apr 2005 11:34

Re: Posex und kein Plan :-(
 
Dann kann ich dir nur sagen: Benutz Delete(), Copy() und Pos()

xineohp 5. Apr 2005 11:40

Re: Posex und kein Plan :-(
 
moin,

eine andere (kompliziertere, wegen Einarbeitung aufwendigere) Möglichkeit wäre mit [dp]Regulären Ausdrücken[/dp] zu arbeiten. Damit dann erstmal alle Links aus der Seite zu filtern und schließlich zu schauen welcher "klausi" enthält.

jolomino 6. Apr 2005 09:48

Re: Posex und kein Plan :-(
 
so, habs hinbekommen, aber nur wenn ich die html datei auf dem rechner habe.

Delphi-Quellcode:
procedure TForm1.GetDlLink(FileName: string);
var

 DlSearch: string;
 startpos, endpos, endpos2 : integer;
 quelle: TextFile;

begin

 AssignFile(quelle, FileName);
 Reset(quelle);

 if IOResult = 0 Then

 begin

   while not EOF(quelle) do

   begin

     ReadLn(quelle, DlSearch);
   //Startposition für suche festlegen
     startpos := Posex(DlFile, DlSearch);

     if startpos > 0 Then

     begin
   //Endposition des Links festlegen
        endpos := Pos('">', DlSearch);
         endpos2 := Pos('"', DlSearch);
   //Downloadlink zurechtschneiden
       DlLink := Copy(DlSearch, endpos2+1, endpos-23);

     end;

   end;

 end;

 CloseFile(quelle);

end;
Aufruf mit:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  //DownloadFile wechles gesucht werden soll
      DlFile := 'test.zip';
      GetDlLink(ExtractFilePath(Application.Exename)+'datei.htm');
end;
2. versuch war mit temphtm := idhttp1.Get(Url) die seite in einem string zu laden. funzt auch bestens.
übergabe sah dann so aus:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  //DownloadFile wechles gesucht werden soll
      DlFile := 'test.zip';
      GetDlLink(temphtm);
end;
nur leider hab ich es noch nicht hinbekommen, den übergebenen string in der Procedure GetDlLink zu verarbeiten, da ja ein file erwartet wird und ein string geliefert wird.
kann mir einer nen tipp geben, wie ich die procedure abändern muss?

gruss jolomino

xineohp 6. Apr 2005 12:45

Re: Posex und kein Plan :-(
 
lade die Seite in eine tStringlist
Delphi-Quellcode:
myStrynglist.Text := temphtm
und ersetze deine while Schleife durch
Delphi-Quellcode:
For i:=0 to myStringlist.Count-1 do
dann kannst du mit myStringlist[i] auf die einzelnen Zeilen zugreifen.
(Vergiss aber nicht die Stringlist vorher zu erzeugen und anschließend wieder freizugeben)

Im Endefekt solltest du dann sowas haben:
Delphi-Quellcode:
var
  myStringlist: tStringlist;
  i: integer;
begin
  myStringlist := tstringlist.Create;
  myStrynglist.Text := temphtm;

  For i:=0 to myStringlist.Count-1 do
  begin
    // 
  end;

  myStringlist.Free;
end;

jolomino 6. Apr 2005 18:42

Re: Posex und kein Plan :-(
 
hi, erstmal danke für die antwort, hab aber noch ein problem.

Delphi-Quellcode:
var
  myStringlist: tStringlist;
  i: integer;
begin
  myStringlist := tstringlist.Create;
  myStrynglist.Text := temphtm;
  DlSearch := myStringlist.text;

  For i:=0 to myStringlist.Count-1 do
  begin
       //Startposition für suche festlegen

     startpos := Posex(DlFile, DlSearch);

     if startpos > 0 Then

     begin
   //Endposition des Links festlegen
        endpos := Pos('">', DlSearch);
         endpos2 := Pos('"', DlSearch);
   //Downloadlink zurechtschneiden
       DlLink := Copy(DlSearch, endpos2+1, endpos-23);

     end;
  end;

  myStringlist.Free;
end;
irgentwie funzt die startpos nicht richtig, es kommt zumindesten als ergebnis ein komischer string raus, welcher sich aus den ersten beiden zeilen zusammen setzt.

gruss jolomino


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr.
Seite 1 von 2  1 2      

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