Autor Beitrag
Addy88
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win 7

BeitragVerfasst: Do 24.11.11 00:13 
Hallo zusammen,

da man ja in Zeiten der Modernen Technik immer fauler wird, wollte ich ein Vorhandenes Ant Script in Delphi umsetzen um eine etwas bedienerfreundlichere GUI zu bekommen.
Problem ist, ich hab keine Ahnung wie ich das angehen soll, nach langem googlen bin ich nämlich nicht wirklich schlauer. Alle Ergebnisse drehen sich immer nur um das kopieren kompletter Verzeichnisse.

Hier mal das Beispiel wie es in Ant aussieht:

<if>
<available file="${local.path}/${project}/installer/v${valt}" type="dir"/>
<then>
<copy todir="${local.path}/${project}/installer/v${vneu}" preservelastmodified="true" overwrite="true">
<fileset dir="${local.path}/${project}/installer/v${valt}">
<exclude name="BO/application/boserver/*.*"/>
<exclude name="POS/application/pos/*.*"/>
<exclude name="updatepakete/**"/>
</fileset>
</copy>
</if>

Nun hätte ich das gerne irgendwie in Delphi umgesetzt, für Ratschläge wäre ich sehr dankbar.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 24.11.11 13:14 
Suche alle passenden Dateien mit FindFirst..FindNext (wie findest du z.B. in unserer Library), dann prüfe, ob sie die Bedingungen erfüllen und werfe alle unpassenden wieder aus der Liste oder schreibe sie gar nicht erst hinein.
Danach kopiere alle Dateien auf der Liste.

Der Inhalt des Skripts sieht ja so aus als ob du in der selben Branche arbeitest. :mrgreen:
Addy88 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win 7

BeitragVerfasst: Do 24.11.11 13:54 
Hi, also den Ansatz hatte ich auch schon, Sache ist aber ich müsste dann quasi erstmal alle Dateien in dem Verzeichnis "${local.path}/${project}/installer/v${valt}" auslesen, in eine temporäre Datei schreiben und dann aus dieser wieder alle Einträge mit meinetwegen *.bz2 rausnehmen?! Geht das nicht irgendwie einfacher?

Bzw. gibt es da nicht vielleicht schon Api's oder ähnliches welche ein copy mit exclude unterstützen?


Ja Retail Branche, ich hoffe der Chef bekommt nicht mit das ich mit dem "Feind" kommuniziere :D
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 24.11.11 14:57 
user profile iconAddy88 hat folgendes geschrieben Zum zitierten Posting springen:
Hi, also den Ansatz hatte ich auch schon, Sache ist aber ich müsste dann quasi erstmal alle Dateien in dem Verzeichnis "${local.path}/${project}/installer/v${valt}" auslesen, in eine temporäre Datei schreiben und dann aus dieser wieder alle Einträge mit meinetwegen *.bz2 rausnehmen?!
Warum? :gruebel:
Das alles passiert mit der reinen Dateiliste im Speicher und danach wird erst kopiert, wenn die Liste nur die gewünschten Einträge enthält.
Addy88 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win 7

BeitragVerfasst: Do 24.11.11 16:37 
Dann hab ich gerade ein Verständniss Problem wie ich da bestimmte Dateitypen bzw. Verzeichnisse nicht mit in die Dateiliste übergebe. Und eine ganz wichtige Sache, wird während des Kopiervorgangs die Verzeichnisstruktur beibehalten oder werden die kopierten Dateien dann einfach plain in das target.dir gelegt?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 25.11.11 00:10 
Ich habe eine entsprechende Funktion einmal allgemeingültig erstellt und in die Library gepackt:
www.delphi-library.d...ewtopic.php?p=654795
Du kannst dort eine oder mehrere Masken (kommasepariert) angeben, ebenso wie eine oder mehrere Masken zum Ausschließen von Dateien. (Außerdem gibt es noch weitere Optionen.)

Die resultierende Dateiliste kannst du dann 1:1 zum Kopieren benutzen, wobei die relativen Pfadangaben mit enthalten sind und ebenfalls benutzt werden können um die Zielverzeichnisse ggf. anzulegen.
Addy88 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win 7

BeitragVerfasst: Fr 25.11.11 18:24 
Hi Sebastian, vielen vielen Dank! Da wäre ich selbst nie hin gekommen