![]() |
Sonderzeichen wo keine sein sollten
Servus
Denk mal des isch ein einfaches Problem, doch für mich Neuling nicht so einfach zu lösen. Ich hab ein Prog das mir nen HTML Code aus meinem TWebBrowser ausliest und dann einen bestimmten teil in nen String macht. Danach sollte es alle Zeichen außer Zahlen herausfiltern, sodass ich am Schluß diesen dann in einem Editfeld ausgeben kann. Nun kommen nach den Zahlen noch so komische Sonderzeichen, die aber im HTML Code gar nicht vorhanden sind. Ausgabe: 1814/D 716/D 850/D< HTML Code: 237.203.111/g/gold.gif"> 1814</td><td widt 237.203.111/g/stones.gif"> 716</td><td><img .237.203.111/g/wood.gif"> 850</td></tr> Danke schon mal im voraus. Nebenbei noch kann mir jemand sagen wie ich per button nen Button im TWebBrowser drücken kann. Beispiel: Auf meiner Form ist ein BUtton anmelden und auf dem Browser auch wie kann ich durch klicken des Formbuttons den anderen auch "drücken". MfG Command3000 |
Re: Sonderzeichen wo keine sein sollten
Hi!
Kann es sein, du zerlegst den HTML Code falsch? :gruebel: Hast du da mal einen kleinen Auszug des Codes? Wie man einen Button im TWebBrowser anklickt verrät dir die DP-Suche ( ![]() |
Re: Sonderzeichen wo keine sein sollten
Ich kenne dein Code zum auslesen ja nicht, aber sieht fast so aus, als ob du halt die tags nicht komplett entfernst.
237.203.111/g/gold.gif"> 1814</td><td widt _________________________1814/D du entfernst wohl nur das "</t", kann das sein? was meinst du mit sonderzeichen? das "/d"? (edit: hab nicht gesehen dass schon jemand geantwortet hat, lass es trotzdem mal stehen). |
Re: Sonderzeichen wo keine sein sollten
Also den html code hol ich mir mit
variabledeclaration hab ich weggelassen
Delphi-Quellcode:
weiß isch a bissle amateurhaft geschrieben aber ich wollt schnell nur die ideen ausarbeiten bevor ich wieder was
htmlcode:=WebBrowser1.OleObject.Document.Body.InnerHtml;
wort:= copy(htmlcode,i+10,10); //wort aus html holen for J:=0 to length(wort) do begin for H:=0 to 10 do begin if(copy(wort,j,1)=IntToStr(H)) then //Prüfen ob zeichen eine Zahl ist begin zahl := true;end; // wenn Zahl dann true wenn net dann net *g* end; if(zahl = false)then begin Delete(wort,j,1);end //wenn nicht zahl zeichen löschen else zahl := false; end; neues in meinem Kopf hatte. MfG Command3000 [edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen. Mfg, Daniel[/edit] |
Re: Sonderzeichen wo keine sein sollten
also da blick ich nicht durch.
-> Wort := Copy(HTMLCode, I+10, 10); du hast I gar nicht festgelegt...!?! -> for J := 0 to Length(Wort) do... du musst mit 1 beginnen |
Re: Sonderzeichen wo keine sein sollten
Delphi-Quellcode:
Könnte so schon besser funkionieren. Immerhin darfst du nur auf die dezimalen Ziffern und nicht auf die Zahlen von 0 bis 10 abprüfen.
htmlcode:=WebBrowser1.OleObject.Document.Body.InnerHtml;
wort:= copy(htmlcode,i+10,10); //wort aus html holen for J:=1 to length(wort) do begin for H:=0 to 9 do zahl := (copy(wort,j,1)<>IntToStr(H)) if not zahl then Delete(wort,j,1) //wenn nicht zahl zeichen löschen else zahl := false; end; MfG, hanselmansel |
Re: Sonderzeichen wo keine sein sollten
Also ich hab mal a bissle weitergearbeitet und bin nun zu genauerem gekommen:
Die Zeichen hinter den Zahlen sind wirklich keine sinderzeichen sondern ein /t und ein Rechteck. Woher das Rechteck kommt weiß ich net aber die beiden anderen Zeichen kommen noch vom htmlcode warum weiß ich aber nicht. Normal soll er mir nur Zahlen anzeigen und die restlichen Zeichen löschen. Hier mal der Code
Code:
Wäre um Hilfe sehr froh da ich einfach nicht weiterkomme.
function TForm8.uberG() : String;
var htmlcode : String; wort : String; i : Integer; J : Integer; stopt : boolean; H : Integer; zahl : boolean; begin htmlcode:=WebBrowser1.OleObject.Document.Body.InnerHtml; //Laden des HTML Codes stopt:=true; zahl := false; I:=0; while(I<length(htmlcode))or (wort <> 'gold.gif"> ')do //HIer ist auch was falsch, kann man das nicht so stehen lassen? begin //Solange I kleiner als die Textlänge und wort nicht 'gold.gif"> ' I:= I+1; //ist läuft es weiter wort := copy(htmlcode,i-1,11); end; wort:= copy(htmlcode,i+11,10); //Die Zeichen nach 'gold.gif"> ' werden als wort gespeichert for J:=1 to length(wort) do begin zahl:= false; for H:=0 to 9 do begin if(copy(wort,j,1) = IntToStr(H))then zahl := true; //Prüfe ob das Zeichen eine 1 ist oder eine 2 usw end; //wenn ja dann mach zahl = true if(zahl = false)then delete(wort,j,1); //wenn zahl false ist das zeichen löschen end; //MAch das mit jedem Zeichen bis zum Textende result := wort; end; MfG Command3000 |
Re: Sonderzeichen wo keine sein sollten
Das ist das typische "Schleifen-Lösch-Problem": Du löschst ein Zeichen im String per Delete. Jetzt rücken alle Chars dahinter logischerweise einen Index auf. Nun erhöhst du aber i und überprüfst wort[i]. Damit hast du aber einen Char ausgelassen => Du entfernst nur jedes zweite Zeichen.
Zitat:
![]() Hier mein Code-Vorschlag:
Delphi-Quellcode:
htmlcode:=WebBrowser1.OleObject.Document.Body.InnerHtml;
Wort := Copy(htmlcode, Pos('.gif"> ', htmlcode), Length('.gif"> ')); for i := Length(Wort) downto 1 do if not InRange(Ord(Wort[i], Ord('0'), Ord('9')) then Delete(Wort, i, 1); |
Re: Sonderzeichen wo keine sein sollten
Juhu *andenKopfklatsch* :wall: :wall: :wall: :wall: :wall:
Tausend Danke :-D :-D :-D Was für ein Fehler hey: "Ich schäme misch". :wall: :wall: :wall: :wall: MfG Command3000 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 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 by Thomas Breitkreuz