AGB  ·  Datenschutz  ·  Impressum  







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

Gucken, womit String anfängt

Ein Thema von tail · begonnen am 31. Jul 2006 · letzter Beitrag vom 31. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
tail

Registriert seit: 2. Jun 2005
89 Beiträge
 
#1

Gucken, womit String anfängt

  Alt 31. Jul 2006, 00:45
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/(.*)$~ )
mfg tail
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#2

Re: Gucken, womit String anfängt

  Alt 31. Jul 2006, 01:20
Moin erstmal...

Schaue dir Mal den Befehl (Funktion) Pos an...

Delphi-Quellcode:
if Pos('/Verzeichnis/') > -1 then begin
  Showmessage('Verzeichnis Vorhanden');
end;
ich hoffe ich hatte deine Frage richtig verstanden

MfG real_Thunder
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Gucken, womit String anfängt

  Alt 31. Jul 2006, 01:23
Ich würde die Abfrage mit = 0 machen, da dann der Teil auch am Anfagng sein muss
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#4

Re: Gucken, womit String anfängt

  Alt 31. Jul 2006, 04:51
@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.
Thomas Breitkreuz
  Mit Zitat antworten Zitat
tail

Registriert seit: 2. Jun 2005
89 Beiträge
 
#5

Re: Gucken, womit String anfängt

  Alt 31. Jul 2006, 05:42
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^^
mfg tail
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Gucken, womit String anfängt

  Alt 31. Jul 2006, 06:39
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.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Gucken, womit String anfängt

  Alt 31. Jul 2006, 08:54
"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/'
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: Gucken, womit String anfängt

  Alt 31. Jul 2006, 09:02
Hallo,
Zitat von 3_of_8:
"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.
Er meinte sicher "anders als bei allen anderen Arrays, die nämlich normalerweise bei Null anfangen".
Zitat von 3_of_8:
EDIT: Schneller als pos könnte evtl. das hier sein:

Delphi-Quellcode:
str:='/verzeichnis/Programme/';
if copy(str, 1, length('/verzeichnis/'))='/verzeichnis/'
Das dürfte sich nicht viel nehmen. Bei Pos wird ja nur verglichen, bei dieser Methode erst kopiert und dann verglichen. Also sollte Pos etwas schneller sein.

Gruß
xaromz
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Gucken, womit String anfängt

  Alt 31. Jul 2006, 09:09
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:
if Pos(AnsiLowerCase('/Verzeichnis/'), AnsiLowerCase(Pfadangabe)) = 1 then
  Showmessage('Verzeichnis Vorhanden');
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.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Gucken, womit String anfängt

  Alt 31. Jul 2006, 09:34
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:
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;
EDIT: OK, diese Methode, habe ich gerade gemerkt, ist viel langsamer.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:58 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