![]() |
Gucken, womit String anfängt
Ich habe folgenden String: "/verzeichnis/Programme/"
Anstatt Programme kann dort auch etwas anderes stehen. z.B. Windows und dann soll das noch in Unterordner gehen, z.B. Windows/System32 (wäre dann "/verzeichnis/Windows/System32") Wie kann ich überprüfen, ob das erste "/verzeichnis/" ist? Gibt es Reguläre Ausdrücke, wie in PHP? (dann würde ich es so machen: ~^/verzeichnis/(.*)$~ ;)) |
Re: Gucken, womit String anfängt
Moin erstmal...
Schaue dir Mal den Befehl (Funktion) Pos an...
Delphi-Quellcode:
ich hoffe ich hatte deine Frage richtig verstanden
if Pos('/Verzeichnis/') > -1 then begin
Showmessage('Verzeichnis Vorhanden'); end; MfG real_Thunder |
Re: Gucken, womit String anfängt
Ich würde die Abfrage mit = 0 machen, da dann der Teil auch am Anfagng sein muss
|
Re: Gucken, womit String anfängt
@Nicolai 1605: Dabist Du auf dem Holzweg. Wenn pos (such, gegeben) = 0 dann kommt such in gegeben gar nicht vor.
Ich gehe davon aus, daß Du pos (such, gegeben) = 1 meintest. Gruß onlinekater PS: Das soll keine Klugscheißerei sein, ich falle auch immer wieder darauf rein, dass StringOperationen/Funktionen wie Pos, Insert, Delete immer bei 1 anfangen zu zählen. |
Re: Gucken, womit String anfängt
Wenn ich 0 oder > -1 nehmen, geht das nicht. Dann geht alles in die If (auch /bla/) Ich habe jetzt 1 Genommen. Das geht irgentwie, Kp warum^^
|
Re: Gucken, womit String anfängt
Hat onlinekater schon geschrieben. Bei Strings hat des erste Zeichen den Index 1 und nicht 0, wie in den meisten anderen Fällen. Pos gibt also im Erfolgsfall mindestens 1 zurück und andernfalls 0, d.h. Pos>-1 ist immer wahr.
|
Re: Gucken, womit String anfängt
"Wie in den meisten anderen Fällen..."
Hö? Strings in Delphi sind immer 1-basiert, das heißt wenn Pos 0 ausgeben würde, wenn es Position 1 meint, wäre das ziemlich unsinnig. EDIT: Schneller als pos könnte evtl. das hier sein:
Delphi-Quellcode:
str:='/verzeichnis/Programme/';
if copy(str, 1, length('/verzeichnis/'))='/verzeichnis/' |
Re: Gucken, womit String anfängt
Hallo,
Zitat:
Zitat:
Gruß xaromz |
Re: Gucken, womit String anfängt
Huhu? Diskutiert ihr nur unter euch? Schonmal drauf geachtet was der Fragesteller noch für ein Problem hat (was zum Thema gehört) im Gegensatz zu eurer 0/1 Diskussion die hier nix zu suchen hat? Euer Code geht nicht - egal was da für eine Zahl steht!
@tail: Probier es mal damit:
Delphi-Quellcode:
Weil ein String nur dann gefunden wird, wenn er exakt die gleiche Schreibweise hat. Wenn nur ein Buchstabe grösser oder kleiner ist, dann haut der bisher hier gezeigte Code nicht mehr hin.
if Pos(AnsiLowerCase('/Verzeichnis/'), AnsiLowerCase(Pfadangabe)) = 1 then
Showmessage('Verzeichnis Vorhanden'); |
Re: Gucken, womit String anfängt
Das wollte ich eigentlich noch schreiben, habe es dann aber vergessen.
Und: Effizienz ist wichtig. Wir diskutieren nicht unter uns. Das betrifft alles die Frage. Wie wäre es damit:
Delphi-Quellcode:
EDIT: OK, diese Methode, habe ich gerade gemerkt, ist viel langsamer.
function StrAtPos(substr, str: String; pos: Integer): Boolean;
var I: Integer; begin Result:=False; if (pos<1) or (pos>length(str)) or (pos+length(substr)-1>length(str)) then exit; str:=ansilowercase(str); substr:=ansilowercase(substr); for I:=1 to length(substr) do if substr[I]<>str[pos+I-1] then exit; Result:=True; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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-2025 by Thomas Breitkreuz