Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Geht das einfacher ? (Pos, PosEx) (https://www.delphipraxis.net/117418-geht-das-einfacher-pos-posex.html)

Tommy1988 17. Jul 2008 19:48


Geht das einfacher ? (Pos, PosEx)
 
Folgendes habe ich ohne zu denken zusammengefriemelt. Wollte nur, dass es schonmal klappt:

Delphi-Quellcode:
pPos1 := AnsiPos('<span class="showTime">', aHTML);
pPos1Ex := PosEx('</span>', aHTML, pPos1+1);
Showmessage(Copy(aHTML, pPos1+24, (pPos1-pPos1Ex+24)*-1));
pPos1 := AnsiPos('<span class="artisteTime">', aHTML);
pPos1Ex := PosEx('</span>', aHTML, pPos1+1);
Showmessage(Copy(aHTML, pPos1+26, (pPos1-pPos1Ex+26)*-1));
pPos1 := AnsiPos('<p class="titreTime">', aHTML);
pPos1Ex := PosEx('</p>', aHTML, pPos1+1);
Showmessage(Copy(aHTML, pPos1+21, (pPos1-pPos1Ex+21)*-1));

pPos2 := PosEx('<span class="showTime">', aHTML, pPos1Ex+1);
pPos2Ex := PosEx('</span>', aHTML, pPos2+1);
Showmessage(Copy(aHTML, pPos2+24, (pPos2-pPos2Ex+24)*-1));
pPos2 := PosEx('<span class="artisteTime">', aHTML, pPos1Ex+1);
pPos2Ex := PosEx('</span>', aHTML, pPos2+1);
Showmessage(Copy(aHTML, pPos2+26, (pPos2-pPos2Ex+26)*-1));
pPos2 := PosEx('<p class="titreTime">', aHTML, pPos1Ex+1);
pPos2Ex := PosEx('</p>', aHTML, pPos2+1);
Showmessage(Copy(aHTML, pPos2+21, (pPos2-pPos2Ex+21)*-1));

pPos3 := PosEx('<span class="showTime">', aHTML, pPos2Ex+1);
pPos3Ex := PosEx('</span>', aHTML, pPos3+1);
Showmessage(Copy(aHTML, pPos3+24, (pPos3-pPos3Ex+24)*-1));
pPos3 := PosEx('<span class="artisteTime">', aHTML, pPos2Ex+1);
pPos3Ex := PosEx('</span>', aHTML, pPos3+1);
Showmessage(Copy(aHTML, pPos3+26, (pPos3-pPos3Ex+26)*-1));
pPos3 := PosEx('<p class="titreTime">', aHTML, pPos2Ex+1);
pPos3Ex := PosEx('</p>', aHTML, pPos3+1);
Showmessage(Copy(aHTML, pPos3+21, (pPos3-pPos3Ex+21)*-1));
Dabei gehts um je 3 Variablen am Hintereinander (je ein Block ist das da oben) die aus einem Dokument an drei Stellen genommen werden.

Nun meine Frage: Wie könnte man das einfacher gestalten?
Ich bekomme das nicht in eine Funktion gepackt, weil ich nicht weis wie ich das "dynamisch" gestalten soll :?

NickelM 17. Jul 2008 20:15

Re: Geht das einfacher ? (Pos, PosEx)
 
Hm... *überleg*
Also den ersten Block würde ich mit Prozedur Funtion schreiben. Wenn das machsen willst musste nur die Wert nehmen die geändert werden oder beim Aufruf anders sind als Prozedur Varaible angeben:
Delphi-Quellcode:
//irgentein passender name oder einen den du dir merken kannst, was er da macht
//die Varaiblen, die du Werten darin zuweisst, müssen Unit variablen sein (unter var der Unit)
procedure DoSomething1(Wert1,Wert2 : String; Integer1 : Integer);
begin
pPos1 := AnsiPos(Wert1, aHTML);
pPos1Ex := PosEx(Wert2, aHTML, pPos1+1);
Showmessage(Copy(aHTML, pPos1+Integer1, (pPos1-pPos1Ex+Integer1)*-1)); ;
end;

//für den ersten Teil des Blocken so aufrufen:
//Block:
pPos1 := AnsiPos('<span class="showTime">', aHTML);
pPos1Ex := PosEx('</span>', aHTML, pPos1+1);
Showmessage(Copy(aHTML, pPos1+24, (pPos1-pPos1Ex+24)*-1));
//Aufruf:
DoSomething1('<pan class="showTime">','</span>',24);
Das wars schon. Vieleicht fällt es dir jetzt einfacher es zumachen

EDIT: Sorry für die vielen Edits, aber ich hab vieles Erst wieder gemerkt als es abgesendet war :mrgreen:

marabu 17. Jul 2008 20:46

Re: Geht das einfacher ? (Pos, PosEx)
 
Hallo Micha,

immer wenn du bei deinem Code feststellst, dass sich bestimmte Teile wiederholen, dann geht es ganz sicher eleganter. Da du Teile aus einem HTML-Dokument extrahieren möchtest, wäre der Zugriff über das HTML Document Object Model (DOM) naheliegend. Wenn möglich würde man aber ein bis zwei Ebenen oberhalb der SPAN und P Elemente ansetzen, vorzugsweise bei einem direkt identifizierbaren Element.

Stichworte: Hier im Forum suchengetElementById Hier im Forum suchengetElementsByName Hier im Forum suchengetElementsByTagName

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 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