Autor Beitrag
$ebbi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Do 28.07.11 12:50 
Hi,

ich möchte gerne ein Delphi Programm schreiben, welches Dateien aus Ordner A ausschneidet und in Ordner B kopiert, allerdings hab ich keine Ahnung wie ich das machen könnte. Gibts für sowas Befehle oder andere Möglichkeiten?
Zusätzlich soll die aktuellste Datei (letztes Änderungsdatum) aus Ordner A nicht ausgeschnitten werden sondern in Ordner A bleiben.

Wäre schon wenn mir jemand sagen könnte wie man soetwas machen kann.

mfg $ebbi


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Do 28.07.2011 um 13:03
Moderiert von user profile iconMartok: Titel geändert, war: "Strg+X; Strg + V"
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 28.07.11 13:04 
Moin!

Mal ein paar Suchbegriffe: Suche in: Delphi-Forum, Delphi-Library FINDFIRST Suche in: Delphi-Forum, Delphi-Library MOVEFILE :idea: :les: :zustimm:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
$ebbi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Do 28.07.11 15:07 
eine bestimmte datei verschieben klappt jetzt. Jetzt muss ichs noch hinbekommen, dass ich mehrere verschiebe (ohne den Namen zu kennen), und die erste nicht zu verschieben. Wäre schön wenn mir da jemand nochma helfen könnte.

Findfirst hab ich nix passendes gefunden, movefile funktioniert tadellos, dafür schonmal vielen dank.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 28.07.11 15:18 
Moin!

user profile icon$ebbi hat folgendes geschrieben Zum zitierten Posting springen:
Findfirst hab ich nix passendes gefunden,
Sorry, aber das kann ich mir nicht vorstellen :suspect: :les: Es sei denn, du meinst, dass du keinen c&p-fähigen Code findest... :mrgreen: dafür sind wir auch nicht zuständig...

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 28.07.11 18:33 
1. Ein schlechterer Titel für deinen Beitrag ist dir nicht eingefallen? Warum schreibst du nicht, was du machen willst: "Dateien verschieben"
2. Hättest du damit schon einen sehr erfolgversprechenden Suchbegriff.
3. Wärst du dann bestimmt auf MoveFile und SHFileOperation gestoßen.
4. Du willst uns sagen, dass du zu FindFirst(File) hier im Forum keine brauchbaren Suchergebnisse gefunden hast? Könnte daran liegen, dass du nicht gesucht hast.

Für diesen Beitrag haben gedankt: BenBE, Regan
$ebbi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Do 28.07.11 20:17 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
1. Ein schlechterer Titel für deinen Beitrag ist dir nicht eingefallen? Warum schreibst du nicht, was du machen willst: "Dateien verschieben"


auschneiden+einfügen ist im Prinzip das gleiche wie verschieben, sollte ich dich damit überfordert haben tut es mir leid ;)

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:

3. Wärst du dann bestimmt auf MoveFile und SHFileOperation gestoßen.


bin ich ja dann auch dank der netten Hilfe von Narses, der im Gegensatz zu dir, freundlich, darauf hingewissen hat.

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:

4. Du willst uns sagen, dass du zu FindFirst(File) hier im Forum keine brauchbaren Suchergebnisse gefunden hast? Könnte daran liegen, dass du nicht gesucht hast.


ja genau das möchte ich dir sagen vllt liegt das auch daran dass ich nicht alles versteh, weil meine Kenntnisse eben sehr beschränkt sind.

Dank dir gesellen sich zu der Beschreibung von Informatikern, neben übergewichtig und humorlos nun auch noch unfreundlich, aber gibt ja zum Glück auch ausnahmen (z.b. narses zumindest isser nett ;))
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 29.07.11 00:37 
Moin!

user profile icon$ebbi hat folgendes geschrieben Zum zitierten Posting springen:
vllt liegt das auch daran dass ich nicht alles versteh, weil meine Kenntnisse eben sehr beschränkt sind.
Welchen Code hast du dir denn angesehen? Hast du ihn ausprobiert? Was genau verstehst du nicht? :nixweiss:

Was Luckie vermutlich sagen wollte ist: das sind Basics, da wird dir keiner den Code so schreiben, wie du ihn haben willst (und das zu recht). Das solltest du selbst auf die Kette bekommen. Wenn´s hakt: konkrete Fragen stellen. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 29.07.11 00:48 
Mit Strg+X, Strg+V verbinde ich eher Textoperationen in einem Textverarbeitungssystem. Aber was ist daran so schwer sich klar auszudrücken? Ist das zu viel verlangt, wen man am Beitragstitel gleich erkennen kann, um was es geht? Und ich würde sagen, dass ich nicht unhöflich war, nur einfach direkt.

Zu deinem Problem dürftest du im Forum übrigens fast fertigen Code finden. Es müsste nur etwas für deinen speziellen Anspruch modifiziert werden. Und wenn wir deinen speziellen Anspruch mal außer Acht lassen, dürftest du schon fertigen Code hier finden.

Für diesen Beitrag haben gedankt: BenBE
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Fr 29.07.11 11:24 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Mit Strg+X, Strg+V verbinde ich eher Textoperationen in einem Textverarbeitungssystem.


Diese Befehle beziehen sich keinesfalls nur auf einzelne Zeichen(ketten) (und sind damit keinesfalls auf Editoren und komplexere Textprogramme beschränkt), sondern sind auch bei Daten anderer Art (z.B. Teile eines Bildes) und auch auf Dateien und sogar Verzeichnisse anwendbar. Und mit beiden Befehlen hintereinander in dieser Reihenfolge kann man sehr wohl verschieben. Insofern war der Beitragstitel eher unpräzis (weil unvollständig) als falsch.

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Aber was ist daran so schwer sich klar auszudrücken? Ist das zu viel verlangt, wen man am Beitragstitel gleich erkennen kann, um was es geht?


Zur Ehrenrettung des Diskussionseröffners sei gesagt: Der klare Ausdruck (bzw. die klare Ausdrucksweise) setzt voraus, in einer Materie voll drinzustecken, besser noch, darüberzustehen. Diesen Vorteil hat man anfangs nicht.

Für diesen Beitrag haben gedankt: Regan
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 29.07.11 13:02 
Ja, ich weiß. Benutze ich ja selber oft so im Explorer. Nichts desto trotz verbinde ich es eher mit dem Ausschneiden und Einfügen von Zeichen in einem Editor oder Textverarbeitungssystem. Aber egal.
$ebbi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Fr 29.07.11 13:08 
Gut dann versuch ich mal konkretter zu werden :)

movefile klappt soweit, problem ist, dass ich damit nur eine Datei verschieben kann und ich deren genauen Namen kennen muss, gibts da andere Möglichkeiten? Mein Problem ist eben dass einfach alle Dateien verschoben werden sollen ohne deren genauen Namen zu kennen.

mit findfirst werd ich mich nochma genauer auseinandersetzen ma sehen vllt klappt das ja.

Ach ja kann ich eigneltich den Pfad zu einer Datei aus einem edit auslesen?
Habs mal ganz klassisch probiert also movefile('pfada','pfadb'); wobei pfada und b eben die strings aus dem edit sind.
klappt aber nicht im gegensatz zu movefile('C:\DateiA','C:\DateiB') gibts ne möglichkeit den pfad ins edit zun schreiben?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 29.07.11 15:18 
Mit FindFisrt bekommst du doch alle Dateien im Order. Und dann eben für jede Datei MoveFile aufrufen. Da du aber die jüngste Datei nicht verschieben willst, würde ich alle Dateien in einer (String)Liste sammeln und die jüngste Datei rausschmeißen. Dann für jede Datei in der Liste MoveFile aufrufen.
$ebbi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Fr 29.07.11 16:28 
habs jetzt fast geschafft. alles wird in ein memo gschrieben und muss jetzt nur noch verschoben werden. allerdings scheint movefile mit der string variable (verz1+2) nicht zurechtzukommen. wenn ich mir verz anzeigen lasse steht der exakt richtige dateipfad da. wenn ich manuell genau den ausgegebenen pfad einfüge klappts auch, mit der variable jedoch nicht. woran liegt den dass?


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  
  for j:=0 to memo1.Lines.Count do
  begin
  verz1:=edit1.text+memo1.lines[j];
  verz2:=edit2.Text+memo1.lines[j];
  movefile('verz1','verz2');
  end;


mfg $ebbi
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 29.07.11 16:39 
Das ist ein ganz dicker Anfängerfehler, würde ich sagen. :zwinker: Du möchtest hier die Datei "verz1" nach "verz2" verschieben. Das sind aber keine gültigen Dateinamen - oder siehst du da am Anfang sowas wie "c:\" ? ;-)

So muss es richtig heißen:

ausblenden Delphi-Quelltext
1:
movefile(verz1, verz2);					


Also ohne die ' '. Dann sind das da die Variablen. Mit den ' ' sind das einfach Strings mit dem Inhalt "verz1" bzw. "verz2".

_________________
We are, we were and will not be.
$ebbi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Fr 29.07.11 16:51 
Ohne '' bekomme die Fehlermeldung: Inkompatible Typen 'string' und 'Pwidechar'

komischerweise funktioniert dagegen deletefile(verz1) problemlos.
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Fr 29.07.11 21:56 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Mit FindFisrt bekommst du doch alle Dateien im Order.


Mit Findfirst findet man doch nur einen Eintrag, und zwar, soviel mir davon bekannt ist, immer denselben. Rekursiv (oder eher mit einem impliziten sog. callback?!) geht es dann mit Findnext weiter, bis auch das sich irgendwann erschöpft. Alternativ kann man auch die erste - logischerweise mit Findfirst - gefundene Datei verschieben, und beim nächsten Aufruf von Findfirst muß logischerweise eine andere Datei (als erster Eintrag) gefunden werden.


Zuletzt bearbeitet von Delphi-Laie am Fr 29.07.11 22:06, insgesamt 1-mal bearbeitet
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 29.07.11 22:05 
Wie der Threadersteller davon ausgegangen ist, dass man mit Strg+X und Strg+V gleich weiß, dass es um das Verschieben von Dateien geht, bin ich davon ausgegangen, dass wenn von FindFirst(File) die rede ist, man auch weiß, dass man mit FindNext(File) und einer entsprechenden Schleife alle Dateien in einem Ordner (und eventuell noch Unterordnern) finden kann.
$ebbi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Sa 30.07.11 17:37 
Programm ist fertig :)

hier lag der Hund begraben eientlich ziemlich logsich, komisch aber dass ich das bei deletefile nicht gebrauht hab :?:

ausblenden Delphi-Quelltext
1:
  movefile(pchar(verz1),pchar(verz2));					
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19313
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 30.07.11 18:22 
user profile icon$ebbi hat folgendes geschrieben Zum zitierten Posting springen:
hier lag der Hund begraben eientlich ziemlich logsich, komisch aber dass ich das bei deletefile nicht gebrauht hab :?:
Wieso ist das komisch? Die Parameter sind schließlich auch andere...
ausblenden Delphi-Quelltext
1:
2:
function DeleteFile(const FileName: string): Boolean;
function MoveFile(lpExistingFileName, lpNewFileName: PWideChar): BOOL; stdcall;
Das DeleteFile, das du benutzt hast, ist nicht umsonst in der Unit SysUtils definiert. Dort wird dann die API Funktion Windows.DeleteFile aufgerufen, die wiederum auch einen PWideChar erwartet. Diese Funktion ist genauso wie MoveFile in der Unit Windows deklariert, da es eine direkte API Funktion ist.

Dass die Typen der Parameter unterschiedlich sind, zeigt dir Delphi doch aber eigentlich auch an, wenn du die Klammer hinter den Befehl setzt oder Strg + Shift + Leer drückst...

Für diesen Beitrag haben gedankt: BenBE
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Sa 30.07.11 18:26 
Das liegt vielleicht an der unterschiedlichen Kapselung der (eigentlich) Windows-Funktionen durch Delphi.

Welchen Datentypes die Funktionen bedürfen, ist auch schon mithilfe der Programmierhilfe ("Code insight") ermittelbar, dazu muß man nicht unbedingt ein Forum fragen.

Edit: jaenicke war schneller und antwortete im Prinzip das gleiche, jedoch mal wieder ausführlicher und fundierter....