Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit POS() funktion (https://www.delphipraxis.net/53302-problem-mit-pos-funktion.html)

n0b0dy 13. Sep 2005 21:31


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

marabu 13. Sep 2005 21:55

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

n0b0dy 13. Sep 2005 21:56

Re: Problem mit POS() funktion
 
danke :))
ich werd mal schaun und weiter berichten ;)

DGL-luke 13. Sep 2005 22:02

Re: Problem mit POS() funktion
 
Delphi-Quellcode:
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;
Nicht getestet und nicht auf parameterreihenfolge geachtet. also selber debuggen, und in die onlinehilfe schauen ;)
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:
towork:= copy(memo1.text,0,memo1.cursorpos) //irgendwie so muss das heissen. evtl. is es auch selectionstart oder so ähnlich.
:-D

//Nachtrag

@marabu: und ich mach mir extra die arbeit.....

n0b0dy 13. Sep 2005 22:03

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:

Aenogym 13. Sep 2005 22:06

Re: Problem mit POS() funktion
 
Zitat:

Zitat von n0b0dy
sry für die peinliche frage. welche Online-Hilfe? bin erst seit gestern hier und habe hier auch nichts gefunden, was so aussieht... :oops:

als online-hilfe (OH) wird die delphi-hilfe bezeichnet. also in delphi einfach mal F1 drücken ;)

aenogym

n0b0dy 13. Sep 2005 22:06

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*

Christian Seehase 13. Sep 2005 22:25

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

malo 13. Sep 2005 22:38

Re: Problem mit POS() funktion
 
Zitat:

Zitat von Christian Seehase
Ausserdem gibt es hier in der Code-Library auch eine solche Funktion

Du meinst sicherlich das :zwinker:

SirThornberry 13. Sep 2005 22:49

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.

Christian Seehase 13. Sep 2005 23:18

Re: Problem mit POS() funktion
 
Moin SirThornberry,

auch wieder wahr... :wall:
Verlesen :oops:

n0b0dy 14. Sep 2005 00:31

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

n0b0dy 14. Sep 2005 01:23

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:
  ShowMessage(StrRScan(PChar('sadd<ksfnd<jgfnjkn<huhu'), '<'));
...liefert "<huhu"... genau das was ich ja vorher über die position manuell ermitteln wollte.

Also DANKE an alle die sich die mühe gemacht haben. Problem scheint gelöst :)))))


bis demnächst...


MfG
n0b0dy

MaBuSE 15. Sep 2005 11:06

Re: Problem mit POS() funktion
 
Zitat:

Zitat von Aenogym
Zitat:

Zitat von n0b0dy
sry für die peinliche frage. welche Online-Hilfe? bin erst seit gestern hier und habe hier auch nichts gefunden, was so aussieht... :oops:

als online-hilfe (OH) wird die delphi-hilfe bezeichnet. also in delphi einfach mal F1 drücken ;)

Wieso muß ich jetrzt an folgenden Beitrag denken:
http://www.delphipraxis.net/internal...?p=20349#20349

Zitat:

Zitat von Brüggendiek
Hallo Mabuse!
...

oder auch:
F: (irgendeine Anfängerfrage)
A: "Guck in die OH"
F: "Was heißt OH?"
A: "Online-Hilfe"
F: "Aha - hat einer mal grade den Link zur Online-Hilfe?"
A: "F1"
1.) :wall:
2.) Klar, die Generation @ versteht unter Online das Internet!

...
Gruß
Dietmar Brüggendiek



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