Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi string zerlegen ('d:\test\test2\test3\test4') result:=test3 (https://www.delphipraxis.net/58085-string-zerlegen-d-%5Ctest%5Ctest2%5Ctest3%5Ctest4-result-%3Dtest3.html)

agm65 1. Dez 2005 08:44


string zerlegen ('d:\test\test2\test3\test4') result:=test3
 
guten morgen leute...
ich würde gerne nen string zerlege, der so aussieht: ('d:\test\test2\test3\test4')

jetzt möchte ich zB nur test3 als result bekommen...habe mal im forum geschaut und auch tips gefunden
aber zB die stringlist geht leider nicht bei mir, weil ich delphi 5 benutze und dort haben die
stringlists noch keinen delimeter.

jetzt wollte ich euch mal um gute ideen bitte...thx cu

Matze 1. Dez 2005 08:52

Re: string zerlegen ('d:\test\test2\test3\test4') result:=t
 
Hallo

Evtl. helfen dir Hier im Forum suchenExplode, Delphi-Referenz durchsuchenCopy, Delphi-Referenz durchsuchenPos und (ich weiß nicht, ob das schon in Delphi 5 gab): Delphi-Referenz durchsuchenPosEx

lucius 1. Dez 2005 08:56

Re: string zerlegen ('d:\test\test2\test3\test4') result:=t
 
Hi agm65,

Guck dir das mal an.
Weiss nicht ob das auch mit Delphi5 geht.

MFG Lucius.

Pseudemys Nelsoni 1. Dez 2005 09:14

Re: string zerlegen ('d:\test\test2\test3\test4') result:=t
 
Delphi-Quellcode:
function Tokenize(const S: string; const C: Char): TStringDynArray;
var
  SLen, SIdx, NTok, TokStart, TokLen: Integer;
begin
  if S <> '' then
  begin
    SLen := Length(S);
    SetLength(Result, SLen);
    TokStart := 0;
    NTok := 0;
    TokLen := 0;
    for SIdx := 1 to SLen do
    begin
      if S[SIdx] <> C then
      begin
        if TokStart = 0 then
          TokStart := SIdx;
        Inc(TokLen);
      end;
      if ((SIdx = SLen) or (S[SIdx] = C)) and (TokStart > 0) then
      begin
        Inc(NTok);
        Result[NTok-1] := Copy(S, TokStart, TokLen);
        TokStart := 0;
        TokLen := 0;
      end;
    end;
    SetLength(Result, NTok);
  end else
    SetLength(Result, 0);
end;
und dann einfach:

Delphi-Quellcode:
var
  Arr: TStringDynArray;
  I: Integer;
begin
  Arr := Tokenize('d:\test\test2\test3\test4', '\');
  for I := 0 to High(Arr) do
    ShowMessage(Arr[I]);
end;
MfG

marabu 1. Dez 2005 09:24

Re: string zerlegen ('d:\test\test2\test3\test4') result:=t
 
Mein Scherflein:

Delphi-Quellcode:
function ExtractParentDir(dir: string; noPath: boolean): string;
begin
  dir := ExtractFilePath(ExcludeTrailingBackslash(dir));
  if noPath
    then Result := ExtractFileName(ExcludeTrailingBackslash(dir))
    else Result := dir;
end;
Grüße vom marabu

agm65 1. Dez 2005 10:26

Re: string zerlegen ('d:\test\test2\test3\test4') result:=t
 
danke euch allen ..aber marabu rockt das haus ! danke, einfach und effektive ! habt dank ihr treuen delphi fans !

cu

agm65 1. Dez 2005 11:10

Re: string zerlegen ('d:\test\test2\test3\test4') result:=t
 
marabu noch eine frage ...
[Warnung] Unit1.pas(116): Symbol 'ExcludeTrailingBackslash' ist plattformspezifisch

heisst das: auf manchen rechner ist ExcludeTrailingBackslash kein '\' ?

und wie kann man das auf alle rechner übertragen ?

Pseudemys Nelsoni 1. Dez 2005 11:15

Re: string zerlegen ('d:\test\test2\test3\test4') result:=t
 
Ja, bei Linux z.b ist es "/" statt "\"

marabu 1. Dez 2005 11:16

Re: string zerlegen ('d:\test\test2\test3\test4') result:=t
 
Das heißt, dass du diesen Code nicht ohne Änderungen nach Linux portieren kannst. In den neueren Delphi-Versionen gibt es die portierbare Funktion ExcludeTrailingPathDelimiter().

marabu

agm65 1. Dez 2005 11:21

Re: string zerlegen ('d:\test\test2\test3\test4') result:=t
 
aber auf den windows plattformen , egal welches land, sollte es laufen ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.
Seite 1 von 2  1 2      

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