AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringroutine gesucht

Ein Thema von RolfPolf · begonnen am 17. Mär 2006 · letzter Beitrag vom 17. Mär 2006
Antwort Antwort
RolfPolf

Registriert seit: 15. Mär 2006
17 Beiträge
 
Delphi 2005 Personal
 
#1

Stringroutine gesucht

  Alt 17. Mär 2006, 18:04
Hallo Ihr,

Anfängerfrage:
Gibts in Delphi keine Routine, die mir das letzte Vorkommen eines gesuchten Zeichens in einem String ermittelt und mir den Reststring oder die Position zurückliefert? Also sowas wie die Funktion strrchr in PHP . Wenn ich beispielsweise nen String "C:\xxx\yyy\zzz\datei.txt" habe und möchte gerne den Ordner rausbekommen (also "C:\xxx\yyy\zzz") ist das sonst relativ aufwändig...
Wäre toll wenn jemand mir da weiterhelfen könnte!
Viele Grüße,
RolfPolf
  Mit Zitat antworten Zitat
Dust Signs

Registriert seit: 28. Dez 2004
Ort: Salzburg
379 Beiträge
 
#2

Re: Stringroutine gesucht

  Alt 17. Mär 2006, 18:06
Pos?

Dust Signs
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
  Mit Zitat antworten Zitat
RolfPolf

Registriert seit: 15. Mär 2006
17 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Stringroutine gesucht

  Alt 17. Mär 2006, 18:08
Zitat von Dust Signs:
Pos?

Dust Signs
??? Pos liefert mir das ERSTE Vorkommen im String, ich brauche das LETZTE vorkommen. Habe nix gefunden wie ich Pos parametrisieren kann um das umzustellen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Stringroutine gesucht

  Alt 17. Mär 2006, 18:08
StrScan()+1 liefert dir den Reststring bezüglich des ersten Vorkommens.
Aber den Ordener kannst du mit ExtractFilePath aus einem Dateinamen extrahieren.
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Stringroutine gesucht

  Alt 17. Mär 2006, 18:10
ExtractFileDir() liefert übrigens den Ordner - ohne terminierenden Backslash.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Stringroutine gesucht

  Alt 17. Mär 2006, 18:39
Wobei du dir sowas auch sehr einfach selbst bauen kannst.

in speziel deinem Fall macht es keinen sinn da du ja echt nur Extractfilepath brauchst.

Generell ist ein Pos aber nicht schwer zu implementieren.

Versuche das hier grad mal.

Delphi-Quellcode:

Function PosRueckwaerts(Const Substring, s: String): integer;
Var
  x, y: Integer;
  b: boolean;
Begin
  result := 0; // Falls wir den Substring gar nicht finden
  If Length(s) <> 0 Then // Standart Fehler Abfangen
    If Length(Substring) <> 0 Then // Standart Fehler Abfangen
      If Length(s) >= length(substring) Then Begin // Standart Fehler Abfangen
        x := length(s) - Length(substring) + 1; // Die MAximal hinterste Position in s berechnen
        While x > 0 Do Begin // Wir suchen erst mal nur nach den 1. Zeichen ob die stimmen
          If s[x] = Substring[1] Then Begin // Wenn die Stimmen dann schauen wir nach ob der Rest stimmt
            b := true; // initialisieren
            y := 2; // Wir haben das 1. Zeichen schon verglichen, deswegen braucehn wir erst mit 2 beginnen
            While (y <= Length(Substring)) And (b) Do Begin // Wenn wir wissen das es nicht mehr passt können wir abbrechen
              If s[x + y - 1] <> Substring[y] Then b := false;// Feststellen ob es passt
              inc(y);// Weiterzählen nicht vergessen
            End;
            If b Then Begin// Wenn wir die Position gefunden haben brechen wir alles ab.
              result := x;
              exit;
            End;
          End;
          dec(x);// Weiterzählen nicht vergessen.
        End;
      End;
End;

Procedure TForm1.Button1Click(Sender: TObject);
Begin
  showmessage(inttostr(PosRueckwaerts('l', 'Hallo Welt')));
End;
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
RolfPolf

Registriert seit: 15. Mär 2006
17 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Stringroutine gesucht

  Alt 17. Mär 2006, 20:30
Vielen Dank an alle,
habt mir sehr weitergeholfen!

Grüße,
RolfPolf
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Stringroutine gesucht

  Alt 17. Mär 2006, 21:15
Hi,

und wenn es sich um ein einzelnes Zeichen handelt gibt es noch

   i := LastDelimiter('\', filename); so macht es ExtractFilePath übrigens auch.. steht in Sysutils.

Gruss

Thomas
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz