Delphi-PRAXiS
Seite 1 von 3  1 23      

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)

djpaull 6. Mär 2008 14:58


Suchen der Textteile
 
Hallo allerseits.

Irgendwie komm ich nicht weiter. Mein Programm soll unteranderem folgendes können:
Ein Editfeld enthält immer eine Internet-Adresse. Falls die Adresse ein Bild ist, also z.B. "http://www.bla.de/bilder/bild123.jpg", soll das Programm im zweiten Editfeld nur die Bildnummer ausspucken (hier "123") - also ohne "http://www.bla.de/bilder/bild" und ohne ".jpg".

Hab dazu eine Funktion geschrieben.

Delphi-Quellcode:
function tform1.suchebild;
var Text, Suchtext, Bildnr: string;
    Suchindex: integer;
begin
  Text:= edtadresse.Text;
  Suchtext := '.jpg';
  Suchindex := Pos(Suchtext, Text);
  edt2.Text:=copy(text, Suchindex - 3, Suchindex - 0); // hier wird dir Bildnummer ausgegeben
  edt1.Text:=copy(text, 1, suchindex - 4);
end;
Problem dabei ist, in der Zeile mit "edt2", dass er mir "123.jpg" ausgibt. Ich will aber das ".jpg" weghaben.

Und noch was. Kann man vielleicht den Text nur nach Ziffern oder z.B. nach "/" dursuchen lassen?
Über ein Tutorial zum Thema Suche würd ich mich auch freuen.

[edit=SirThornberry]Titel angepasst - Mfg, SirThornberry[/edit]

Fussball-Robby 6. Mär 2008 16:25

Re: Problem beim Suchen der Textteile
 
erstmal muss eine Funktion einen Ergebniswert haben, wenn dus aber so lassen willst, nimm eine prozedur.
Delphi-Quellcode:
Procedure SucheBild;
Var Text, Suchtext       : String;
    Suchindex, Bildlaenge : Integer;
begin
  Text:= edtadresse.Text;
  Suchtext := '.jpg';
  Suchindex := Pos(Suchtext, Text);
  Bildlaenge := Length(Text)-Suchindex;
  edt2.Text:=Copy(Text, Suchindex - 3, Bildlaenge); //Der Dritte Parameter ist hier NICHT, BIS ZU WELCHEM, sondern WIE VIELE Zeichen er kopieren soll!
  edt1.Text:=Copy(Text, 1, Suchindex - 4);
end;
Mfg

Muetze1 6. Mär 2008 16:40

Re: Problem beim Suchen der Textteile
 
Wie wäre es mit [oh]ChangeFileExt(deinString, '');[/oh] um die Dateiendung zu entfernen? Und Wie wäre es mit Delphi-Referenz durchsuchenExtractFileName() zuvor, damit du nur noch den Dateinamen hast und nicht mehr die URI Angabe?

s-off 6. Mär 2008 16:46

Re: Problem beim Suchen der Textteile
 
Zitat:

Zitat von djpaull
Über ein Tutorial zum Thema Suche würd ich mich auch freuen.

Dann mach Dich mal zum Thema 'Reguläre Ausdrücke' bzw. 'Regular Expressions' bzw. 'RegEx' schlau.

Mazel 6. Mär 2008 16:48

Re: Problem beim Suchen der Textteile
 
Auch mal von mir ein Ansatz:

Delphi-Quellcode:
function TForm1.SuchBildNummer(Addr: String): String;
var
 i: Byte;
 j: Byte;

begin
  Addr := Copy(Addr, 1, Pos('.jpg', Addr) - 1);
  for i := Length(Addr) downto 1 do
    begin
      if (Ord(Addr[i]) < 48) or (Ord(Addr[i]) > 57) then Break;
    end;
  Result := Copy(Addr, i + 1, Length(Addr) - i);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Edt2.Text := SuchBildNummer(Edt1.Text); // Edt1.Text enthält die Adresse
end;

Fussball-Robby 6. Mär 2008 16:53

Re: Problem beim Suchen der Textteile
 
Zitat:

Zitat von Muetze1
Und Wie wäre es mit Delphi-Referenz durchsuchenExtractFileName() zuvor, damit du nur noch den Dateinamen hast und nicht mehr die URI Angabe?

Kann es sein, dass ExtractFileName nur bei Pfadangaben mit "\" und nicht mit "/" geht? Also bei mir liefert er bei
Delphi-Quellcode:
ExtractFileName('http://www.bla.de/bilder/bild123.jpg')
"//www.bla.de/bilder/bild123.jpg" zurück

Mfg

Muetze1 6. Mär 2008 17:17

Re: Problem beim Suchen der Textteile
 
Da du noch Delphi 5 hast: Ja. Bei dir schon.

djpaull 6. Mär 2008 19:23

Re: Problem beim Suchen der Textteile
 
Danke euch. Werde mich schlau machen und n bischen mit dem code rumspielen. Ich schreib dann wie es war. :)

Also, ich hab mich dem Code von Mazel bedient. Es funzt auch soweit. Noch ne Kleinigkeit - kann man auch so machen, dass wenn er ".jpg" findet, soll er das und das machen. Irgendwie so:

if "Suchtext" found then ...

DP-Maintenance 6. Mär 2008 19:24

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Sonstige Fragen zu Delphi" nach "Object-Pascal / Delphi-Language" verschoben.

djpaull 10. Mär 2008 14:10

Re: Suchen der Textteile
 
Hi. Also ich hab das gleiche Problem wie Fussball-Robby. Hab im Web das gefunden. ExtractFileWasAuchImmer scheint nur mit "\" zu funktionieren. Also nur für lokale Adressen, wie die im Explorer bzw. Arbeitsplatz. Gilt also nicht für Internet-Pfade.

[Edit 1]
Vielleicht könnte man örgentwie im AdressenFeld nach "/" suchen, diese in "\" umwandeln, Suchfunktion laufen lassen und anschließend die "\" zurück umwandeln in die "/", damit die Adresse korrekt angezeigt wird. Mal sehen, vielleicht krieg ich das so hin.
[/Edit 1]


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 Uhr.
Seite 1 von 3  1 23      

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