Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateinamen Parsen (https://www.delphipraxis.net/120380-dateinamen-parsen.html)

Ducksoul 10. Sep 2008 08:14


Dateinamen Parsen
 
Guten Morgen,

ich habe einen Dateinamen in folgender Form:

Zitat:

Datum - Betreff - Nutzername
Nun brauche ich, wenn ich die Datei lade den Betreff. Wie kann ich den Dateinamen Parsen, dass ich sozusagen zwischen dem ersten '- ' und dem ' -' die Buchstaben in eine Variable bekomme? ^^

Viele Grüße,
Ducksoul

Klaus01 10. Sep 2008 08:17

Re: Dateinamen Parsen
 
Guten Morgen,

Du könntest Dir die Funktion pos in der Delphihilfe mal etwas näher anschauen.
Oder Du suchst hier im Forum mal nach explode, das zerlegt Dir den String in 3 Einzelteile.

Grüße
Klaus

Ducksoul 10. Sep 2008 13:26

Re: Dateinamen Parsen
 
Ich sollte mir vielleicht mal angewöhnen erst ordentlich zu suchen und dann Fragen zu stellen. Mit Pos hatte ich es heute morgen schon versucht und nicht hinbekommen, aber jetzt hat es doch geklappt.

Hier meine Funktion:
(bei der iPosRight wird von rechts nach links geguckt, da ja evt. auch im Betreff ein '-' vorhanden sein kann)

Delphi-Quellcode:
(* Betreff aus Diktatnamen ermitteln *)
  function TFormular.GetBetreff(FileName: String): String;
    var iPos, iPosLeft, iPosRight, i: Integer;
    begin
        // Betreff Parsen
      Result := '';
      iPosLeft := PosEx('-', FileName, 1) + 2;

      i := Length(FileName);

      repeat
        iPosRight := PosEx('-', FileName, i);
        i := i-1; // i-- geht nich?
      until
        iPosRight <> 0;

      iPosRight := iPosRight - 1;

      Result := Copy(FileName, IPosLeft, IPosRight-IPosLeft);
    end; // function GetBetreff
Vielen Dank für den Gedankenstoß Klaus :)

Viele Grüße,
Franz

uligerhardt 10. Sep 2008 14:03

Re: Dateinamen Parsen
 
Zitat:

Zitat von Ducksoul
Delphi-Quellcode:
        i := i-1; // i-- geht nich?

Aber Dec(i) geht. :mrgreen:

Ducksoul 10. Sep 2008 14:12

Re: Dateinamen Parsen
 
Ah, so geht das also in Delphi. *g* Danke :)

rollstuhlfahrer 10. Sep 2008 16:27

Re: Dateinamen Parsen
 
kleine Anmerkung am Rande: Man sollte doch besser i := i-1 nehmen, da Dec bei manchen Prozessoren eine Performanceschwäche aufweist. (Ich hoffe doch sehr inständig, dass meine Daten noch nicht veraltet sind.)

Bernhard

DeddyH 10. Sep 2008 16:30

Re: Dateinamen Parsen
 
Ich habe es mal genau andersherum gehört. Allerdings soll der resultierende Assembler-Code bei beiden Varianten exakt identisch sein (hab ich aber noch nicht ausprobiert), so dass es letztendlich keine Rolle spielt, welche Variante man nimmt.

uligerhardt 10. Sep 2008 17:27

Re: Dateinamen Parsen
 
Das ist für mich eher ne konzeptuelle Frage: Wenn ich i dekrementieren will, schreibe ich Dec(i) und nicht eine Monstrosität wie i := i-1. :twisted:

toms 10. Sep 2008 17:34

Re: Dateinamen Parsen
 
Zitat:

Zitat von rollstuhlfahrer
kleine Anmerkung am Rande: Man sollte doch besser i := i-1 nehmen, da Dec bei manchen Prozessoren eine Performanceschwäche aufweist. (Ich hoffe doch sehr inständig, dass meine Daten noch nicht veraltet sind.)

Bernhard

Auch wenn Dec() langsamer wäre: Es würde nur bei einem sehr großen String ins Gewicht Fallen.
In diesem Fall wäre es egal, was verwendet wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 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