Delphi-PRAXiS
Seite 1 von 2  1 2      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 Uhr.
Seite 1 von 2  1 2      

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