Zeichen aus einem String filtern

Hallo an Alle,

Ich habe folgendes Problem.
In meiner Listbox steht z.B. folgender String:
‚027 D:\Name123 Name2.jpg‘;
Dabei ist die 027 die Nummer des Strings.
Einfach die Sonderzeichen herausfiltern geht nicht,
weil diese auch im Pfad vorkommen.
Also müssen die ersten 4 Zeichen herausgefiltert werden, weil nur der Pfad gebraucht wird.

Ich benutze Delphi 5.
Danke schon mal im voraus.

Papa-L

Hi Papa-L

Wie gehts? Gebe dir auch wieder mal eine Anwort hier:

Meist du etwa sowas?

procedure irgendwie…
var
a,b:string;
nr,i:longint;
begin
a:=‚027 D:\Name123 Name2.jpg‘;
i:=pos(’ ',a);
if (i > 0) then
begin
try
nr:=StrToInt(copy(a,0,i-1)); {NR vom Anfang des String}
inc(i); {leerzeichen nicht kopieren…}
b:=copy(a,i,length(a)-1); {Reststring}
except
nr:=0;
i:=0;
b:=a;
end;
end else begin
nr:=0;
b:=a;
end;
end;

Gruss Sam99

Hallo,

Also müssen die ersten 4 Zeichen herausgefiltert werden, weil
nur der Pfad gebraucht wird.

Die ersten 4 Zeichen löschen:

s:='027 D:\Name123 Name2.jpg';
delete(s,1,4);

Viele Grüße
Ing

Hi,

mit dem Befehl Copy kannst du Teile eines Strings zurückgeben lassen.

Wenn zB. die ersten 4 Zeichen abgeschnitten werden sollen, muß man alle Zeichen ab dem 5. Zeichen alles kopieren:

Wenn s gleich ‚027 D:\Name123 Name2.jpg‘ ist, dann gibt

Copy(s, 5, MaxInt)

die Zeichenkette ‚D:\Name123 Name2.jpg‘ zurück.

Wenn es nicht immr genau 4 Zeichen sind, dann kannst du mit

p := Pos(':\',s)-1

die Position des Laufwerksbuchstabens bestimmen und

Copy(s, p, MaxInt)

würde dir wieder den Pfad liefern.

VG
Jochen

Hi

p := Pos(’:’,s)-1

In diesem Fall nicht vergessen zusätzlich auf ‚\‘ zu prüfen, falls ‚:‘ nicht gefunden wird:

p := Pos('\\',s)-1

…wegen UNC-Pfad :smile:

Gruss
Sam99