Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String Zerlegen (https://www.delphipraxis.net/134664-string-zerlegen.html)

Asatru 26. Mai 2009 17:26


String Zerlegen
 
Hab da mal ne Frage wieso folgendes nicht funktioniert oder ob nur mein Delphi spinnt...

Delphi-Quellcode:
FindFiles (Label71.Caption, 'project_1.**.exe', True, ListBox3.Items);
project := ListBox3.Items.Strings[0];
pos1 := Pos('project_', project);
pos1 := pos1 + 8;
pos2 := Pos('.exe', project);
Label73.Caption := copy(project, pos1, pos2 - pos1);
der Normale String lautet zum Beispiel

Code:
C:\Program Files (x86)\project\_Germany_\project_1.06.exe
als ausgabe bekomme ich aber

Code:
ram Files (x86)\project\_Germany_\project_1.06
wieso macht er da den Fehler, Hinterlege ich bsp: den Pfad direkt macht er es ohne probleme!

MFG

mkinzler 26. Mai 2009 17:30

Re: String Zerlegen
 
Was hast du vor?

jaenicke 26. Mai 2009 17:34

Re: String Zerlegen
 
Suchst du vielleicht sowas wie ExtractFilePath, ExtractFileExt, ...?

Asatru 26. Mai 2009 17:45

Re: String Zerlegen
 
lasse mir alle Project_1.**.exe in einer Listbox anzeigen, die im ordner project liegen. Dann wollte ich mri den ersten strings eben zerlegen um die version zu bekommen. Dann wird einfach nur die neue Project version in die vorhandene umgeschrieben und dann werden alle alten mit der neuen ersetzt.

Das zerlegen deshalb weil wenn jemand es nutzt der vlt. alle als 1.19a abspeichert muss nun nicht mehr was machen, so wird eben automatisch alles gesucht und in seine version umgeschrieben und ersetzt

Hoffe mein geleiere kannste verstehen xD

DeddyH 26. Mai 2009 17:48

Re: String Zerlegen
 
Das hat aber mit dem Pfad nicht wirklich etwas zu tun, den bekommst Du easy mit den von jaenicke genannten Funktionen.

[edit] Bachstuben wervechselt [/edit]

Satty67 26. Mai 2009 17:49

Re: String Zerlegen
 
Wenn
Delphi-Quellcode:
pos1 := Pos('project_', project);
als Ergebnis 0 ergibt, ist die Ausgabe wie beschrieben.
...und wenn Deine Dateien
Zitat:

Project_1.**.exe
heißen, würde es das erklären

mkinzler 26. Mai 2009 17:50

Re: String Zerlegen
 
Dann würde ich zuerst den Pfad entfernen ExtractFileName() und dann anhand der Punkte zerlegen.

Satty67 26. Mai 2009 17:53

Re: String Zerlegen
 
...und halt schauen, ob das Problem an der Case-Sensitiven Suche des Teilstring liegt.

Helmi 26. Mai 2009 17:53

Re: String Zerlegen
 
Hallo,

ich hab deinen Code mal ausprobiert.

Mein (Test-)Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  project: String;
  pos1: Integer;
  pos2: Integer;

begin
  project := 'C:\Program Files (x86)\project\_Germany_\project_1.06.exe';
  pos1 := Pos('project_', project);
  pos1 := pos1 + 8;
  pos2 := Pos('.exe', project);
  Label1.Caption := copy(project, pos1, pos2 - pos1);
end;
Und als Text im Label kommt "1.06" raus.

Asatru 26. Mai 2009 17:58

Re: String Zerlegen
 
ExtractFileName funzt wunderbar

@Helmi wenn ich direkt den Pfad als String angeben habe hat es auch gefunzt nur wenn ich den string aus Listbox geholt habe gings nicht mehr! Aber danke für eure einfachere Hilfe, spart auch wieder code xD

Merci an alle

Helmi 26. Mai 2009 18:02

Re: String Zerlegen
 
Zum Abschluss ich hätt ich noch was im Angebot (aber nur heute :-) ):

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
const
  const_project = 'project_';

var
  project: String;
  pos_exe: Integer;
  S: String;

begin
  project := 'C:\Program Files (x86)\project\_Germany_\project_1.06.exe';

  //Dateinamen auslesen
  S := ExtractFileName(project);

  If S <> project then
    begin
      //den ersten Teil löschen
      delete(S, 1, length(const_project));

      //Position von ".exe" auslesen
      pos_exe := Pos('.exe', S);

      //vom 1. bis zur Position "pos_exe" - 1 kopieren
      Label2.Caption := copy(S, 1, Pred(pos_exe));
    end;
end;

Satty67 26. Mai 2009 18:02

Re: String Zerlegen
 
ja und wenn der tatsächliche Dateiname ein großes "P" im Namen hat, kommt raus:
Delphi-Quellcode:
ram Files (x86)\project\_Germany_\project_1.06
Aber ExtraxtFileName ist natürlich trotzdem eleganter.

€: bezieht sich auf den Post vor Helmi


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz