Entwickler-Ecke

Sonstiges (Delphi) - Preis aus Memo auslesen, was ist an meinem Code falsch?


BigBen4ever - Sa 18.02.06 18:15
Titel: Preis aus Memo auslesen, was ist an meinem Code falsch?
Moin.
Möchte gerne einen Preis auslesen aus einem in einem Memo enthaltenen Text.
Im Memo sieht der Text wie folgt aus:

<a href="/exec/hgtsg/hg/detail/ofsr-jshs/-/BzgwzgsUL7C/all/ttwgsgs64641">EUR 8,18</a>


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  P:integer;
  Q:integer;
  S:string;
begin
  P:= pos('">EUR ', memo1.text);
  Q:= pos('</a>', memo1.text);
  S:= Copy(P,Pos(' ',p) + 1, Pos('<', q) - 1));
  Edit4.text:=s;
end;


Das war mein Versuch, bekomme die Fehlermeldung inkompatible Typen, bin Delphi Anfänger ...ich weiß wirklich nicht was falsch ist, kann mir jemand helfen?

Ich brauch im Edit4.text folgendes: "8,18"
Würde mein Code dies machen?
Was ist falsch?

Wenn der Code dann funktioniert, wie mache ich es, dass er ganz oben im Memo anfängt also ab Zeile 0 (bzw 1) und bis zum Ende. Also immer wieder nach dieser Pos P sucht und falls die vorhanden ist, am besten die Preise in ein Memo untereinander wegschreiben, das wäre super genial, wenn mir das jemand erklären könnte.

Ok hoffe auf Hilfe, entschuldigt meine Unfähigkeit :(


starsurfer - Sa 18.02.06 18:42

also so findet er erst mal den Preis in dem einen String....

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
var p:integer;
begin
p:=pos('>EUR ',edit1.text);
edit4.text:=copy(edit1.text,p+5,4);
end;


so funzt copy

Quelltext
1:
copy(text_aus_dem_kopiert_wird,startposition_fürs_kopieren,anzahl_der_zeichen_die_kopiert_werden);                    


das ist aber nur die halbe miete :wink:
kannst ja erst mal bissel rum suchen ob du das was hier im Forum findest...
Da gebts ne menge Themen wie man in nem Memo nen Text sucht....


thkerkmann - Sa 18.02.06 18:42

Hi,
der Fehler steckt in Zeile 8.
das copy sollte doch wohl aus dem Memo kopieren und nicht aus einem integer .....


BigBen4ever - Sa 18.02.06 19:11

was muss ich ändern, werde daraus nicht schlau?


Born-to-Frag - Sa 18.02.06 19:17

user profile iconstarsurfer hat folgendes geschrieben:
also so findet er erst mal den Preis in dem einen String....

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
var p:integer;
begin
p:=pos('>EUR ',edit1.text);
edit4.text:=copy(edit1.text,p+5,4);
end;


so funzt copy

Quelltext
1:
copy(text_aus_dem_kopiert_wird,startposition_fürs_kopieren,anzahl_der_zeichen_die_kopiert_werden);                    


das ist aber nur die halbe miete :wink:
kannst ja erst mal bissel rum suchen ob du das was hier im Forum findest...
Da gebts ne menge Themen wie man in nem Memo nen Text sucht....


Stimmt schon nur würde ich das gehighlighte abändern in Pos('</a>', Edit1.Text) denn was ist denn mit EUR 2 oder EUR 344,46? ;)


greetz


starsurfer - Sa 18.02.06 19:23

hast ja recht :oops:

aber

Quelltext
1:
abändern in Pos('</a>', Edit1.Text)                    

ist auch nicht ganz richtig 8)

dann so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);  
var p1,p2:integer;  
begin  
p1:=pos('>EUR ',edit1.text)+5;
p2:=pos('</a>',edit1.text);  
edit4.text:=copy(edit1.text,p1,p2-p1);  
end;
:wink:


Born-to-Frag - Sa 18.02.06 19:34

Stimmt hast Recht...

war grad ein bisschen verwirrt :gruebel: ^^
Jetzt müsste es ihm aber klar sein..

Noch ne frage: Warum nennst du deine Memos EditX?


greetz


starsurfer - Sa 18.02.06 19:42

weil der Algo iM völlig unnütz für ne Memo Suche is( er findet ja nur den ersten Eintrag)...

so hab ichs erst mal mit 2 Edit´s gemacht :) (um de Funktionsweise zu zeigen)


BigBen4ever - Sa 18.02.06 19:58

und wie mache ich das dann als schleife?
bin da echt ratlos hab grad ne stunden mitm freund telefoniert, wir kriegen das nicht hin...

bitte helft mir :(


starsurfer - Sa 18.02.06 20:09

kommt der preis in dem memo...

genau einmal vor?
genau einmal pro zeile vor?
unterschiedlich oft pro zeile vor? (0..WerWeisWieOft)

zusätzlich:
ist das im memo ein html text mit diversen zeilen, und kommt "</a>" öfters vor?


Born-to-Frag - Sa 18.02.06 20:11

user profile iconstarsurfer hat folgendes geschrieben:
weil der Algo iM völlig unnütz für ne Memo Suche is( er findet ja nur den ersten Eintrag)...

so hab ichs erst mal mit 2 Edit´s gemacht :) (um de Funktionsweise zu zeigen)



Achsooo ich hatte mich verlesen :oops: Ich dachte der Autor hat auch Edits genommen.. sry ^^


Born-to-Frag - Sa 18.02.06 20:17

Zu der Schleife.. ich würde es so machen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  mText: String;
begin
  mText := Memo1.Text;
  Edit1.Text := '';
  repeat
    Edit1.Text := Edit1.Text + Copy(mText, Pos('EUR ', mText) + 4, Pos('</a>', mText) - Pos('EUR ', mText) - 4) + '; ';
    mText := Copy(mText, Pos('</a>', mText) + 5, Length(mText));
  until Pos('</a>', mText) = 0;
end;


ungetestet und geht bestimmt noch zu vebessern


greetz


//EDIT: Fehler verbessert ^^


starsurfer - Sa 18.02.06 20:32

born-to-frag:

was ist wenn das ein kompletter html text ist in dem "</a>" öters vorkommt ?

und vor der preisangabe schon mal ein "</a>" steht? dann kommt da murks raus..

wir brauchen werst ma mehr infos zu dem text..

siehe mein post weiter oben...


Born-to-Frag - Sa 18.02.06 20:35

Ich bin ja davon ausgagangen das immer nur diese Preisdinger kommen 8)