![]() |
Pos und Webbrowser
Code:
Das obere wäre der Quellcode den ich in meinem ACP zum Beispiel sehe, wenn ich mir den Quellcode anzeigen lasse. Nun möchte ich in mein Programm eben einige Sachen rausholen. Wenn ich normal nur mit reinen Text arbeite gehts ja mit
......
<tr> <td class="tdh" colspan="2" align="center">VIP BlueManGroup</td> </tr> <tr> <td class="tdn" colspan="2"><span class="fontsmall2">Registriert am 20.01.2008</span></td> </tr> <tr> <td class="tdn">Postings:</td> <td class="tdn">870[img]pictures/posts.gif[/img]</td> </tr> ......
Delphi-Quellcode:
Nur wenn es um HTML Tags gehts haut nix mehr hin, vorallem weil </td> zuoft gibt. Nächste Überlegung wäre den Quellcode in ein memo zu laden und Line für Line zu durchsuchen und dann alles zu machen.
procedure TForm1.Button1Click(Sender: TObject);
var source: String; pos1: Integer; pos2: Integer; begin source := Webbrowser1.OleObject.Document.Body.innerHTML; pos1 := Pos('Anfangstext', source); pos1 := pos1 + 11; pos2 := Pos('Endtext', source); Caption := Copy(source, pos1, pos2 - pos1); end; Nun meine Hauptfrage, gibts eine einfachere Art an diesen Text zu kommen oder bzw. wäre das Ofterwähnte TRegExpr doch besser dafür? Also TRegExpr, oder mit Memo line für line oder gibts noch was einfacheres? Mit freundlichen Grüßen Asatru |
Re: Pos und Webbrowser
Mit PosEx kannst du auch einen Offset setzen.
|
Re: Pos und Webbrowser
Zitat:
Delphi-Quellcode:
Erstmal vielen Dank für den Tip....
pos1 := Pos('VIP ', source);
pos1 := pos1 + 4; pos2 := Posex('</TD>', source, Pos1+1); Nun noch kleine Zwischenfragen, damit ich BSP: den Namen bekomme muss ich </td> Großschreiben, wie muss ich aber schreiben, damit das VIP auch noch mit einbezogen wird?
Code:
oder andere Schreibungen wollen nicht funktionieren.
<TD class="tdh" colspan="2" align="center">
<TD CLASS="tdh" colspan="2" align="center"> ...... MFG |
Re: Pos und Webbrowser
Delphi-Quellcode:
pos2 := Posex('</TD>', UpperCase(source), Pos1+1);
|
Re: Pos und Webbrowser
hallöchen....
im normalen Quelltext ist es ja </td> durch das uppercase wird ja gesagt groß und kleinschreibung ist egal?
Delphi-Quellcode:
Hab ich irgendein Denkfehler noch drin? Den selbst mit Uppercase muss ich </td> <-- immer Groß schreiben.
procedure TForm1.Button1Click(Sender: TObject);
var source: String; pos1: Integer; pos2: Integer; begin source := Webbrowser1.OleObject.Document.Body.innerHTML; pos1 := Pos('<TD class="tdh" colspan="2" align="center">', UpperCase(source)); pos1 := pos1 + 43; pos2 := Posex('</TD>', UpperCase(source), Pos1+1); Caption := Copy(source, pos1, pos2 - pos1); end; MFG #Edit: Man muss TEXT bei Uppercase immer Großschreiben? warum klappt dann
Delphi-Quellcode:
nicht?
pos1 := Pos('<TD CLASS="TDH" COLSPAN="2" ALIGN="CENTER">', UpperCase(source));
|
Re: Pos und Webbrowser
Eigentlich sollte UpperCase alle Kleinbuchstaben in source in Großbuchstaben wandeln
lass dir mal UpperCase( source) anzeigen |
Re: Pos und Webbrowser
Arghhh ich Depp da hät ich och selbst druffkommen können :-P
Nun sehe ich das problem, weil die " werden gar nicht mehr angezeigt und es wurde
Code:
<TD CLASS=TDH ALIGN=MIDDLE COLSPAN=2>
Vielen Dank für deine Gute Hilfe :-P |
Re: Pos und Webbrowser
Sorry im Voraus für den Doppelpost, aber ich hab zu der Sache noch eine offene Frage!
Code:
kann ich irgendwie sagen das ich bei pos3 den 2ten Tag als start suche?
<td class="tdn">Postings:</td>
<td class="tdn">870[img]pictures/posts.gif[/img]Function PosEx(Const SubStr, S: AnsiString; Offset: LongInt = 1): LongInt; ASM PUSH ESI PUSH EDI PUSH EBX TEST &SubStr, &SubStr JE @Exit TEST &S, &S JE @Exit0 TEST &Offset, &Offset JG @POff MOV &Offset, 1 @POff: MOV ESI, &SubStr MOV EDI, &S PUSH EDI MOV EAX, &Offset DEC EAX MOV ECX, [EDI - 4] MOV EDX, [ESI - 4] DEC EDX JS @Fail SUB ECX, EAX ADD EDI, EAX MOV AL, [ESI] INC ESI SUB ECX, EDX JLE @Fail @Loop: REPNE SCASB JNE @Fail MOV EBX, ECX PUSH ESI PUSH EDI MOV ECX, EDX REPE CMPSB POP EDI POP ESI JE @Found MOV ECX, EBX JMP @Loop @Fail: POP EDX @Exit0: XOR EAX, EAX JMP @Exit @Found: POP EDX MOV EAX, EDI SUB EAX, EDX @Exit: POP EBX POP EDI POP ESI End; procedure TForm1.Button1Click(Sender: TObject); var source: String; pos1, pos2, pos3, pos4 : Integer; begin source := Webbrowser1.OleObject.Document.Body.innerHTML; pos1 := Pos('<TD CLASS=TDN>', uppercase(source)); pos1 := pos1 + 14; pos2 := Posex('</TD>', uppercase(source), Pos1+1); pos3 := Posex('<TD CLASS=TDN>', uppercase(source), Pos1+2); pos4 := Pos('<IMG ALT=POSTS', uppercase(source)); Caption := Copy(source, pos1, pos2 - pos1)+ Copy(source, pos3, pos4 - pos3); memo1.Lines.Text:= uppercase(source); end; Wenn ich meinen Quellcode verwende bekomme ich angezeigt: Postings:<TD class="tdn">870 Bin ich richtig auf meinem Weg oder total falsch? MFG |
Re: Pos und Webbrowser
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich mag es jetzt nicht so deutlich schreiben - richtig und falsch hängt auch immer ein wenig von den eigenen Fähigkeiten ab. Wer nicht mit einem Bagger umgehen kann, der muss das Loch halt mit dem Spaten graben. Der Quelltext einer HTML-Seite ist nicht einfach Text, sondern hat eine gewisse Syntax. Auf solchen Markup-Text greift man mit einem geeigneten Parser zu. Ich verwende im angehängten Beispiel den MS HTML Parser. Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 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