PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bestimmte zeichenfolge rausschneiden


Noreux
05.06.2002, 15:04
Hallo miteinander,

Ich habe in einem Label folgende caption:

"blabla beispiel <test> blabla"

nun will ich das was zwischen den eckigen Klammer steht, auslesen. der text in den eckigen klammern kann aber verschieden lang sein, und auch der text nach und vor dem wort in der eckigen Klammer unterscheidet hat nicht jedesmal die selbe Länge. Kann mir jemand sagen, wie ich das Wort in der Klammer auslesen und in ein andere label einfüge? also dass zB im label2 dann "test" drin steht..
danke!


Patrik Graf
05.06.2002, 19:29
function Pos(SubStr, SrcStr: String): Integer;

Die Funktion Pos gibt die Position einer Zeichenfolge in einem String zurück. Ich würde die Funktion folgendermaßen anwenden:


function Filter(sSearchStr: String): String;
begin
Result := Copy(sSearchStr,Pos('<',sSearchStr)+1,(Pos('>',sSearchStr)-1)-(Pos('<',sSearchStr)+1));
end;


Das müsste eigentlich genau den Text zwischen den Klammern zurückliefern :D

Noreux
05.06.2002, 23:12
Ähm..sorry, bin aber ziemlicher anfänger in delphi und hab nich ganz begriffen wie ich das einbau.
wo definier ich die Funktionen?

könntest du bitte, wenns keine umstände macht, kurz ein beispiel machen? also wenn man auf button1 klickt, dass es aus dem label1 alles vor und nach der klammer "wegschneidet" sodass nur noch das was zwischen den Klammern steht, im label steht?
wäre dir echt dankbar...
cya
NoreuX

Patrik Graf
05.06.2002, 23:25
Hmmm... hab ich dann wohl falsch verstanden, aber dann bau ich's eben ein wenig um... :D


procedure TForm1.Button1Click(Sender: TObject);
Var TempStr: String;
begin
TempStr := Label1.Caption;
Delete(TempStr,1,Pos('<',TempStr));
Delete(TempStr,Pos('>',TempStr),Length(TempStr));
Label1.Caption := TempStr;
end;

Noreux
05.06.2002, 23:33
danke, funzt!

Noreux
05.06.2002, 23:42
Hallo,

Ich hab jetzt schon länger rumprobiert und hab jetzt auch ein einigermaßen funktionierendes Tool. Und zwar dreht es sich um ein einfaches mailprogramm (vorerst nur herunterladen der mails). ich benutze die clientsocket. Einloggen , email herunterladen etc ist kein problem..er lädt die email in ein memo.
Absender und subject etc steht ja alles im header. also hab ich es so gemacht, dass er einfach eine bestimmte Zeile ausliest und sie in einem label wiedergibt (also zB Zeile 10 der email, da steht ja der absender im header). nur hab ich jetzt das problem dass der header nicht immer gleich lang ist (server bedingt). das heißt manchmal ist die Zeile 10 der Absender, manchmal steht da aber was ganz anderes in der Zeile. das heißt ich muss absender, subject, body etc anderst auslesen.

nun meine eigentliche frage:
Hat mir irgendjemand nen passenden Rat, wie ich aus der heruntergeladenen email, absender, subject, body usw auslesen kann? also so, dass es bei jeder email klappt, egal wie lang der header ist (also so, wie es programme wie outlook, eudora etc auch machen).

thx

Felix Kaiser
05.06.2002, 23:48
Sollte man eigentlich sehen, der Bodybereich fängt nach der ersten leeren Zeile in der Mail an. Der Absender hat am Zeilenanfang 'From: ' stehen bzw. der Betreff 'Subject: '. Such dir einfach die erste Zeile raus, auf die die jeweilige Eigenschaft zutrifft.

Noreux
06.06.2002, 00:18
Hmm..ok.

Kannst du mir bitte sagen, wie es geht, wenn ich die Zeile auslesen will, in der ein bestimmtes Wort enthalten ist? also gerade zB wie kriege ich´die Zeilennummer raus, in der das Wort "From" ist? thx