AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Geht das einfacher ? (Pos, PosEx)

Ein Thema von Tommy1988 · begonnen am 17. Jul 2008 · letzter Beitrag vom 17. Jul 2008
Antwort Antwort
Tommy1988
(Gast)

n/a Beiträge
 
#1

Geht das einfacher ? (Pos, PosEx)

  Alt 17. Jul 2008, 20:48
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
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Geht das einfacher ? (Pos, PosEx)

  Alt 17. Jul 2008, 21:15
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
Nickel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Geht das einfacher ? (Pos, PosEx)

  Alt 17. Jul 2008, 21:46
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:10 Uhr.
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