Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Sonderzeichen wo keine sein sollten (https://www.delphipraxis.net/50243-sonderzeichen-wo-keine-sein-sollten.html)

Command3000 22. Jul 2005 13:00


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

Matze 22. Jul 2005 13:02

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 (Hier im Forum suchenButton TWebBrowser.

dahead 22. Jul 2005 13:03

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).

Command3000 22. Jul 2005 13:10

Re: Sonderzeichen wo keine sein sollten
 
Also den html code hol ich mir mit
variabledeclaration hab ich weggelassen

Delphi-Quellcode:
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;
weiß isch a bissle amateurhaft geschrieben aber ich wollt schnell nur die ideen ausarbeiten bevor ich wieder was
neues in meinem Kopf hatte.

MfG Command3000

[edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen. Mfg, Daniel[/edit]

dahead 22. Jul 2005 14:11

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

hanselmansel 22. Jul 2005 16:39

Re: Sonderzeichen wo keine sein sollten
 
Delphi-Quellcode:
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;
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.

MfG,

hanselmansel

Command3000 25. Jul 2005 14:56

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:
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;
Wäre um Hilfe sehr froh da ich einfach nicht weiterkomme.

MfG Command3000

Khabarakh 25. Jul 2005 16:05

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:

Delphi-Quellcode:
while(I<length(htmlcode))or (wort <> 'gold.gif"> ')do  
begin                                                    
  I:= I+1;                                              
  wort := copy(htmlcode,i-1,11);
end;

Delphi-Referenz durchsuchenPos :zwinker:

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);

Command3000 25. Jul 2005 16:21

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:41 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