Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Suchen der Textteile (https://www.delphipraxis.net/109727-suchen-der-textteile.html)

Fussball-Robby 10. Mär 2008 14:43

Re: Suchen der Textteile
 
So könnte man es natürlich lösen. Hier mal ein Denkanstoß, den Rest müsstest du aber auch selber hinbekommen.
Delphi-Quellcode:
function FileName(Name:String):String;
begin
  Name:=stringreplace(Name,'/','\',[rfreplaceall]);
  Name:=extractfilename(Name);
  Name:=ChangeFileExt(Name,'');
  Result:=Name;
end;
Oder in einer Zeile: :wink:
Delphi-Quellcode:
function FileName(Name:String):String;
begin
Result:=ChangeFileExt(extractfilename(stringreplace(Name,'/','\',[rfreplaceall])),'');
end;
Mfg

marabu 10. Mär 2008 14:57

Re: Suchen der Textteile
 
Hallo,

wenn nur der Dateiname existiert, dann sind mir die Delimiter eigentlich egal:

Delphi-Quellcode:
// image filename = NAMEnnn.jpg

function ExtractImageNumber(const url: string): string;
var
  iPos: Integer;
  fn: TFileName;
begin
  fn := Copy(url, Succ(LastDelimiter('/', url)), MAXINT);
  if SameText(ExtractFileExt(fn), '.jpg') then
  begin
    fn := ChangeFileExt(fn, '');
    Result := Copy(fn, FirstDelimiter('1234567890', fn), MAXINT);
  end else Result := '';
end;
Freundliche Grüße

djpaull 10. Mär 2008 15:10

Re: Suchen der Textteile
 
Fehler: "FirstDelimiter" ist Undefinirter Bezeichner. Was tun?

[Edit 1]
In meiner DelphiHilfe (TurboDelphi win32) gibt es kein FirstDelimiter, nur LastDelimiter.

marabu 10. Mär 2008 15:28

Re: Suchen der Textteile
 
Hier eine einfache Version ohne MBCS Unterstützung:

Delphi-Quellcode:
function FirstDelimiter(const delimiters, s: string): Integer;
begin
  Result := 0;
  while Result < Length(s) do
  begin
    Inc(Result);
    if Pos(s[Result], delimiters) > 0 then
      Exit
  end;
  Result := 0;
end;

djpaull 10. Mär 2008 15:40

Re: Suchen der Textteile
 
Sorry, nix für Ungut aber ... Der letzte Part Ist etwas zu hoch für mich. Was macht diese Funktion? Bei deinem ersten Part kann ich alles nachvollziehen (das mit URL und .jpg). Wo ist der zusammenhang? :?

[Edit 1]
Ich schau mal hier nach.

[Edit 2]
Also, meine aktuelle Lösung ist folgende:

Delphi-Quellcode:
function tform1.ExtractURLPath(Name: string): String;
begin
  Name:=stringreplace(Name,'/','\',[rfreplaceall]);
  Name:=extractfilename(Name);
  Name:=ChangeFileExt(Name,'');
  Result:=Name;
end;

function tform1.FilePath(Name:String):String;
begin
  Name:=stringreplace(Name,'/','\',[rfreplaceall]);
  Name:=extractfilepath(Name);
  Name:=stringreplace(Name,'\','/',[rfreplaceall]);
  Result:=Name;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
  edt2.Text := ExtractURLPath(edtadresse.Text);
  edt1.Text := FilePath(edtadresse.Text)
end;
Primärziel erreicht. Nur so nebenbei. Kann man in einem Text NUR nach Zahlen oder NUR nach Buchstaben suchen?

Fussball-Robby 10. Mär 2008 15:43

Re: Suchen der Textteile
 
Zitat:

Zitat von djpaull
Sorry, nix für Ungut aber ... Der letzte Part Ist etwas zu hoch für mich. Was macht diese Funktion? Bei deinem ersten Part kann ich alles nachvollziehen (das mit URL und .jpg). Wo ist der zusammenhang? :?

Das ist eine vereinfachte Alternative zur Funktion FirstDelimiter, die dein Delphi ja nicht kennt.
Einfach mit ins Projekt aufnehmen, und der erste Code von marabu müsste funktionieren

DeddyH 10. Mär 2008 15:45

Re: Suchen der Textteile
 
Ich habe es mal für Dich kommentiert:
Delphi-Quellcode:
function FirstDelimiter(const delimiters, s: string): Integer;
begin
  //Ergebnis mit 0 vorbelegen --> kein Treffer
  Result := 0;
  //ggf. ganzen String s durchgehen
  while Result < Length(s) do
  begin
    //Result wird hochgezählt und dient als Laufvariable
    Inc(Result);
    //wenn das Zeichen an der aktuellen Position des Strings s
    //im String Delimiters vorkommt
    if Pos(s[Result], delimiters) > 0 then
      //Funktion verlassen, Result ist ja bereits belegt
      Exit
  end;
  //kein Treffer gefunden, Ergebnis wieder auf 0 setzen
  Result := 0;
end;

djpaull 10. Mär 2008 17:55

Re: Suchen der Textteile
 
Achso-o :thumb: . Jetzt habe ich verstanden. Danke. Nichts desto trotz, weiss vielleicht jemand, ob man in einem Text NUR nach Zahlen oder NUR nach Buchstaben suchen kann?

DeddyH 10. Mär 2008 18:12

Re: Suchen der Textteile
 
Wie meinst Du das jetzt?

djpaull 10. Mär 2008 18:26

Re: Suchen der Textteile
 
Naja. Angenommen mein Text besteht aus Zahlen und Buchstaben. Ist es möglich alle Zahlen in EditFeld1 und alle Buchstaben in EditFeld2 auszugeben ( - die Leerzeichen brauche ich in meinem Fall nicht). Oder den Text bis zu der letzten (gefundenen, beliebigen) Zahl auszugeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:31 Uhr.
Seite 2 von 3     12 3      

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