AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Sonderzeichen wo keine sein sollten

Ein Thema von Command3000 · begonnen am 22. Jul 2005 · letzter Beitrag vom 25. Jul 2005
Antwort Antwort
Command3000

Registriert seit: 13. Jul 2005
6 Beiträge
 
#1

Sonderzeichen wo keine sein sollten

  Alt 22. Jul 2005, 14:00
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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Sonderzeichen wo keine sein sollten

  Alt 22. Jul 2005, 14:02
Hi!

Kann es sein, du zerlegst den HTML Code falsch? 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.
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#3

Re: Sonderzeichen wo keine sein sollten

  Alt 22. Jul 2005, 14:03
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).
  Mit Zitat antworten Zitat
Command3000

Registriert seit: 13. Jul 2005
6 Beiträge
 
#4

Re: Sonderzeichen wo keine sein sollten

  Alt 22. Jul 2005, 14:10
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]
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#5

Re: Sonderzeichen wo keine sein sollten

  Alt 22. Jul 2005, 15:11
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
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#6

Re: Sonderzeichen wo keine sein sollten

  Alt 22. Jul 2005, 17:39
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
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
Command3000

Registriert seit: 13. Jul 2005
6 Beiträge
 
#7

Re: Sonderzeichen wo keine sein sollten

  Alt 25. Jul 2005, 15:56
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
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Sonderzeichen wo keine sein sollten

  Alt 25. Jul 2005, 17:05
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

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);
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Command3000

Registriert seit: 13. Jul 2005
6 Beiträge
 
#9

Re: Sonderzeichen wo keine sein sollten

  Alt 25. Jul 2005, 17:21
Juhu *andenKopfklatsch*

Tausend Danke

Was für ein Fehler hey: "Ich schäme misch".

MfG Command3000
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:20 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