Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Dateien umbenennen mit unbekannten Parametern (https://www.delphipraxis.net/140759-dateien-umbenennen-mit-unbekannten-parametern.html)

delphi-n 25. Sep 2009 14:11


Dateien umbenennen mit unbekannten Parametern
 
Hi!

Ich würde gern ein "dateien-umbenenn-programm" schreiben.
Leider gibt es ein paar Probleme:

1. Ich hab kein Quellcode fürs umbenennen (außer dem, aber da kommt das:
Delphi-Quellcode:
Erzeugen
  [Fehler] Unit4.pas(44): Undefinierter Bezeichner: 'TSHFileOpStruct'
  [Fehler] Unit4.pas(46): Operator oder Semikolon fehlt
  [Fehler] Unit4.pas(47): Operator oder Semikolon fehlt
  [Fehler] Unit4.pas(50): Operator oder Semikolon fehlt
  [Fehler] Unit4.pas(51): Operator oder Semikolon fehlt
  [Fehler] Unit4.pas(52): Operator oder Semikolon fehlt
  [Fehler] Unit4.pas(52): Undefinierter Bezeichner: 'fof_MultiDestFiles'
  [Warnung] Unit4.pas(52): Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
  [Fehler] Unit4.pas(54): Operator oder Semikolon fehlt
  [Fehler] Unit4.pas(54): Operator oder Semikolon fehlt
  [Warnung] Unit4.pas(54): Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
  [Fehler] Unit4.pas(55): Undefinierter Bezeichner: 'ShFileOperation'
  [Warnung] Unit4.pas(55): Vorzeichenbehaftete und -lose Typen werden verglichen - beide Operanden werden erweitert
  [Fehler] Unit4.pas(95): Operator ist auf diesen Operandentyp nicht anwendbar
  [Fataler Fehler] Unit1.pas(44): Verwendete Unit 'Unit4.pas' kann nicht compiliert werden


2. Sie haben alle unterschiedliche endungen, die ja voher entfernt werden müssen (also z.B. String[5].Left.-4, oder so) Wie ist die genaue Anweisung dafür?



Vielen Dank schon mal für eure Antworten :)

guinnes 25. Sep 2009 14:38

Re: Dateien umbenennen mit unbekannten Parametern
 
Hast du die ShellAPI eingebunden ?

mkinzler 25. Sep 2009 14:38

Re: Dateien umbenennen mit unbekannten Parametern
 
Zitat:

Die Unit ShellApi muss eingebunden werden.

Tryer 25. Sep 2009 14:39

Re: Dateien umbenennen mit unbekannten Parametern
 
1. Du solltest den Quelltext erst kopieren wenn Du auch den Text davor gelesen hast :)

2. Einfach rückwärts durchlaufen und vom Anfang bis zum ersten gefundenen '.' mit Copy() heraustrennen (Oder bis "Length - Length(ExtractFileExt())").

Grüsse, Dirk

DeddyH 25. Sep 2009 14:40

Re: Dateien umbenennen mit unbekannten Parametern
 
Zitat:

Die Unit ShellApi muss eingebunden werden.
Soviel zu den Fehlermeldungen. Und zu den Dateiendungen, die heißen auf Englisch file extensions, die benötigten Funktionen demnach ExtractFileExt bzw. ChangeFileExt.

guinnes 25. Sep 2009 14:40

Re: Dateien umbenennen mit unbekannten Parametern
 
Zitat:

Zitat von Tryer
2. Einfach rückwärts durchlaufen und vom Anfang bis zum ersten gefundenen '.' mit Copy() heraustrennen (Oder bis "Length - Length(ExtractFileExt())").

Oder gleich mit ChangeFileExtension arbeiten

DeddyH 25. Sep 2009 14:41

Re: Dateien umbenennen mit unbekannten Parametern
 
[OT] Eine halbe Stunde lang gar keine Antwort und dann 5 innerhalb von 2 Minuten :lol: [/OT]

delphi-n 25. Sep 2009 16:06

Re: Dateien umbenennen mit unbekannten Parametern
 
Zitat:

Und zu den Dateiendungen, die heißen auf Englisch file extensions, die benötigten Funktionen demnach ExtractFileExt bzw. ChangeFileExt.
danke, ich habe das gefunden:

http://www.delphibasics.co.uk/RTL.as...dCode1=Yes#Ex1


das müsste eigentlich besser sein, als das mit der ShellAPI (das ist eh viel zu komplieziert :D )

aber danke für die antworten :)

ich werd das gleich mal testen

guinnes 25. Sep 2009 16:41

Re: Dateien umbenennen mit unbekannten Parametern
 
Damit benennst du die Datei aber nicht um, sondern Änderst nur die Endung

DeddyH 25. Sep 2009 16:44

Re: Dateien umbenennen mit unbekannten Parametern
 
Ist das etwa kein Umbenennen? :gruebel:

delphi-n 25. Sep 2009 18:44

Re: Dateien umbenennen mit unbekannten Parametern
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich habs mal eingefügt:

Delphi-Quellcode:
 ChangeFileExt(Form3.ListBox1.Items.Strings[i], Edit2.Text);

Allerdings kommt folgender fehler (siehe Attachment)

mkinzler 25. Sep 2009 18:50

Re: Dateien umbenennen mit unbekannten Parametern
 
Was sind die Grenzen der Laufvariable i?

delphi-n 26. Sep 2009 08:49

Re: Dateien umbenennen mit unbekannten Parametern
 
ich hab eine while-schleife eingebaut:


Delphi-Quellcode:
i:=0;
while i<ListBox1...Count do

ChangeFileExt(Form3.ListBox1.Items.Strings[i], Edit2.Text);
i:=i+1;

end;

mkinzler 26. Sep 2009 09:04

Re: Dateien umbenennen mit unbekannten Parametern
 
Warum keine FOR-Schleife?

delphi-n 26. Sep 2009 09:30

Re: Dateien umbenennen mit unbekannten Parametern
 
Zitat:

Warum keine FOR-Schleife?
ist doch eig. egal

Tryer 26. Sep 2009 09:32

Re: Dateien umbenennen mit unbekannten Parametern
 
Zitat:

Zitat von DeddyH
Ist das etwa kein Umbenennen? :gruebel:

ChangeFileExt ändert nur den String ohne Einfluß auf die Datei.

DeddyH 26. Sep 2009 10:25

Re: Dateien umbenennen mit unbekannten Parametern
 
Wenn man das falsch benutzt, ja. Dabei muss man nur den Unterschied zwischen Prozeduren und Funktionen kennen ;)

Tryer 26. Sep 2009 10:34

Re: Dateien umbenennen mit unbekannten Parametern
 
.. und selbst wenn man es richtig benutzt ;)

DeddyH 26. Sep 2009 10:43

Re: Dateien umbenennen mit unbekannten Parametern
 
Meine Güte. Was ich meine ist, dass man den Rückgabewert der Funktion für das eigentliche Umbenennen nutzen soll, so wie es auf der ersten Seite steht, passiert natürlich nix. Drücke ich mich so unverständlich aus?

Tryer 26. Sep 2009 10:48

Re: Dateien umbenennen mit unbekannten Parametern
 
Ist doch klar ;)
Ich wollte dem Fragesteller nur den Tip geben das ChangeFileExt kein Ersatz für den ShellAPI-Aufruf ist. Sein Link könnte den Eindruck erwecken das damit die Datei umbenannt wird.

Grüsse, Dirk

DeddyH 26. Sep 2009 10:51

Re: Dateien umbenennen mit unbekannten Parametern
 
Jetzt fällt es mir wie Schuppen aus den Haaren. Der Link ist nachträglich hineineditiert worden, daher fehlte mir der Bezug.

delphi-n 26. Sep 2009 11:27

Re: Dateien umbenennen mit unbekannten Parametern
 
Zitat:

Ich wollte dem Fragesteller nur den Tip geben das ChangeFileExt kein Ersatz für den ShellAPI-Aufruf ist. Sein Link könnte den Eindruck erwecken das damit die Datei umbenannt wird.

das würde für das programm reichen :)

DeddyH 26. Sep 2009 11:30

Re: Dateien umbenennen mit unbekannten Parametern
 
Was könnte "Datei umbenennen" denn auf Englisch heißen? "Rename File", da könnte es ja vielleicht eine ähnlich klingende Funktion geben. :zwinker:

delphi-n 26. Sep 2009 12:41

Re: Dateien umbenennen mit unbekannten Parametern
 
es soll ja eig. nur die datei-erweiterung geändert werden.

(da ist nur dieser doofe fehler (s.o.))

DeddyH 26. Sep 2009 12:48

Re: Dateien umbenennen mit unbekannten Parametern
 
Ja und? Das entspricht ja auch einem Umbenennen. Pseudocode:
Delphi-Quellcode:
RenameFile(<Alter Dateiname>,<Alter Dateiname mit neuer Endung>);

delphi-n 26. Sep 2009 13:15

Re: Dateien umbenennen mit unbekannten Parametern
 
danke, ich teste das gleich mal :)

delphi-n 28. Sep 2009 20:55

Re: Dateien umbenennen mit unbekannten Parametern
 
ich hab jetzt:

Delphi-Quellcode:
ChangeFileExt(Form1.Frame21.Label1.Caption+ListBox1.Items[i], Edit1.Text);
da kommt zwar kein fehler, es klappt aber auch nicht ^^ (es wird einfach nicht umbenannt)

DeddyH 28. Sep 2009 21:03

Re: Dateien umbenennen mit unbekannten Parametern
 
ChangeFileExt ist eine Funktion, die Dir den Dateinamen mit der angegebenen Endung zurückgibt, nicht mehr und nicht weniger. Das Umbenennen musst Du natürlich noch übernehmen (siehe mein letzter Post).

mkinzler 28. Sep 2009 21:03

Re: Dateien umbenennen mit unbekannten Parametern
 
ChangeFileExt nennt die Datei aber nicht um, sondern gibt nur den neuen dateinamen zurück.

Delphi-Quellcode:
newfilename := ChangeFileExt( 'Datei.exe', 'txt');
ergibt Datei.txt

himitsu 28. Sep 2009 21:22

Re: Dateien umbenennen mit unbekannten Parametern
 
Zitat:

Zitat von mkinzler
ChangeFileExt nennt die Datei aber nicht um, sondern gibt nur den neuen dateinamen zurück.

wäre aber auch böse sowas ... vorallem wenn man z.B. so den Namen+Ort einer "gleichnamigen" Datei im Programmverzeichnis rausbekommen möchte.
Delphi-Quellcode:
inifilename := ChangeFileExt(Application.ExeName, '.ini');


@mkinzler: den Punkt nicht vergessen
'gif' ergibt 'Dateigif'
und bei '' kommt 'Datei' raus

Sir Rufo 28. Sep 2009 23:55

Re: Dateien umbenennen mit unbekannten Parametern
 
Delphi-Quellcode:
var
  AlterDateiName,
  NeuerDateiName : string;
begin
  AlterDateiName := 'C:\Datei.txt';
  // Wir bauen uns den neuen Datei-Namen
  NeuerDateiName := ChangeFileExt( AlterDateiName, '.dat' );
  // Wir ändern den Namen der Datei auf der Fest-Platte
  RenameFile( AlterDateiName, NeuerDateiName );
end;
So in etwa muss der Code lauten - nur noch an die eigene Umgebung anpassen

ach, ja, weil es jetzt so schön ist:
Delphi-Referenz durchsuchenRenameFile Delphi-Referenz durchsuchenChangeFileExt


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