![]() |
Problem mit POS() funktion
hallo,
ich habe ein kleines problem undzwar möchte ich in irgendeinem Feld (bin mir noch nicht sicher...; also Edit, Memo, Richedit irgendsowas) RÜCKWÄRTS mit Pos ein bestimmtes vorkommen suchen. also wenn ich folgenden string habe : " bla ha<llo difdjfn jd<fnjs<dkfn < dfdsjfsdj| sdd<sfd<sfdf"; so. der strich markiert die cursorposition. wie bestimme ich nun das LETZE vor dem cursor liegende "<", also das fette in diesem fall? habe was mit pos() versucht aber irgendwie kam ich net zurecht...kann jemand helfen? MfG |
Re: Problem mit POS() funktion
Hi,
schau dir mal SysUtils.StrRScan (bzw. die Ansi-Variante davon) in der Online-Help an. Damit solltest du dir was passendes basteln können. Grüße aus Hessen vom marabu |
Re: Problem mit POS() funktion
danke :))
ich werd mal schaun und weiter berichten ;) |
Re: Problem mit POS() funktion
Delphi-Quellcode:
Nicht getestet und nicht auf parameterreihenfolge geachtet. also selber debuggen, und in die onlinehilfe schauen ;)
function lastpos(s:string,c:char):integer; overload;
var i:integer; begin for i := length(s) downto 0 do //einfach urnter zählen... if s[i]=c then begin result:=i; exit; //und abbrechen, sobald ein zeichen gefunden ist. end; end; function lastpos(sub,s:string):integer; overload; var cancel:boolean; begin cancel:=false; while not cancel do begin result:=pos(sub,s); // position holen delete(s,0,result); // anfang bis dahin wegschneiden if pos(sub,s) = then cancel:=true; // wenn da nix mehr is, dann hammer den letzten! end; end; die erste sollte schneller sein, geht aber nur, wenn man einen char sucht. Du solltest dann selber noch schauen, dass du zuvor ab dem cursoer alles wegschneidest. also etwa so:
Delphi-Quellcode:
:-D
towork:= copy(memo1.text,0,memo1.cursorpos) //irgendwie so muss das heissen. evtl. is es auch selectionstart oder so ähnlich.
//Nachtrag @marabu: und ich mach mir extra die arbeit..... |
Re: Problem mit POS() funktion
sry für die peinliche frage. welche Online-Hilfe? bin erst seit gestern hier und habe hier auch nichts gefunden, was so aussieht... :oops:
|
Re: Problem mit POS() funktion
Zitat:
aenogym |
Re: Problem mit POS() funktion
@DGL_Luke.
Danke :) andas runterzählen hab ich garnicht gedacht. grml... naja so krieg ichs dann auf jeden fall hin. möchte trotzdem gerne die lösung mit SysUtils.StrRScan kennenlernen ;) EDIT: achsoooo die Delphi Hilfe :)) oops. *g* |
Re: Problem mit POS() funktion
Moin n0b0dy,
welche Delphi-Version benutzt Du? Unter Umständen wäre für Dein Problem nämlich auch PosEx ganz hilfreich. (Diese Funktion gab es in D5, und davor, noch nicht. Bei D6 weiss ich es nicht, und ab D7 gibt es die Funktion) Ausserdem gibt es hier in der Code-Library auch eine solche Funktion |
Re: Problem mit POS() funktion
Zitat:
![]() |
Re: Problem mit POS() funktion
Christian Seehase: posex sollte für rückwärtssuche nicht zu gebrauchen sein da man nur die Anfangssuchposition angeben kann aber nicht die Suchrichtung.
|
Re: Problem mit POS() funktion
Moin SirThornberry,
auch wieder wahr... :wall: Verlesen :oops: |
Re: Problem mit POS() funktion
hm also an der delphi version solls nicht scheitern ;) hab von 3 bis 2k5 sogut wie jede ;)
nur ich hab mir angewöhnt die 2k5Personal zu verwenden ;) aber PosEx ist in der Tat nicht das richtige. werde mich morgen drum kümmern. bin gleich am einpennen ;) MfG |
Re: Problem mit POS() funktion
habs doch noch jetzt gemacht ;)
also ich muss mich für die "aufruhe"-mache entschuldigen. ich brauche eigentlich doch nicht die position, sondern das was hinter dem zeichen kommt. ihc hätte das vorher über die Pos von dem "<" gemacht, und dann geprüft, was danach kommt.... aber dank marubu und der "StrRScan" löse ich genau mein problem :))) denn folgender code...:
Delphi-Quellcode:
...liefert "<huhu"... genau das was ich ja vorher über die position manuell ermitteln wollte.
ShowMessage(StrRScan(PChar('sadd<ksfnd<jgfnjkn<huhu'), '<'));
Also DANKE an alle die sich die mühe gemacht haben. Problem scheint gelöst :))))) bis demnächst... MfG n0b0dy |
Re: Problem mit POS() funktion
Zitat:
![]() Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 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