![]() |
Geht das einfacher ? (Pos, PosEx)
Folgendes habe ich ohne zu denken zusammengefriemelt. Wollte nur, dass es schonmal klappt:
Delphi-Quellcode:
Dabei gehts um je 3 Variablen am Hintereinander (je ein Block ist das da oben) die aus einem Dokument an drei Stellen genommen werden.
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)); 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 :? |
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:
Das wars schon. Vieleicht fällt es dir jetzt einfacher es zumachen
//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); EDIT: Sorry für die vielen Edits, aber ich hab vieles Erst wieder gemerkt als es abgesendet war :mrgreen: |
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: ![]() ![]() ![]() 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