![]() |
Datei 1 mit Datei 2 ersetzen
Hallo liebe Leute brauche Hilfe bei folgendem:
Ich Programmiere seit kurzem mit Delphi. Ich habe mir eine Form erstellt mit 4 Buttons (Abrechen[funzt],2x Durchsuchen[sich öffnet ein Opendialg],OK[deswegen schrieb ich hier^^]) Wenn ich den OK Button klicke soll folgendes passieren: Die ausgewählte Datei Nummer eins (Dursuchen Button 1) soll ersetzt werden von Datei nummer 2 (durch Durchsuchen Button 2 ausgewählt) Nun weiß ich leider nicht wie... Bitte helft mir. MFG Gonzo85 PS: Programmiere mit Delphi 7 |
Re: OpenDialg1 und OpenDialog2
Hi,
ersetzen meinst Du einfach die Datei 1 über die Datei 2 kopieren? |
Re: OpenDialg1 und OpenDialog2
Ja richtig..
Mit Dem Opendialog 1 auf dem 1. Dursuchen Button wähle ich eine Datei aus die von der OpenDialog 2 der 2. Dursuchen Taste Datei ersetzt werden soll. Quasi Datei 1 ersetzt Datei 2. Und das mit OpenDialogs(oder so ähnlich wenn möglich) mfg |
Re: OpenDialg1 und OpenDialog2
Vllt solltest du uns genauer sagen, was für eine Datei das ist ;)
Willkommen in der DP :dp: EDIT: ggf SaveDialog? |
Re: OpenDialg1 und OpenDialog2
Hi,
das sollte mit CopyFile oder MoveFile funktionieren. Je nach Belieben. Das MSDN bzw. die Onlinehilfe sagt Dir mehr darüber. |
Re: OpenDialg1 und OpenDialog2
Es handelt sich um Sounddateien. Genauer gesagt *:wav dateien.
Es soll eine Art Soundchanger sein. Man wählt Sound 1 aus und der wird durch Sound 2 ersetzt. Bei SaveDialog Öffnet sich ja noch ein fenster mit "Speichern" möchte aber Datei 1 auswählen dann Datei 2 auswählen dann OK klickne und dann wird datei 1 durch datei 2 ersetzt^^ mfg Zitat:
|
Re: OpenDialg1 und OpenDialog2
Zitat:
|
Re: OpenDialg1 und OpenDialog2
hm, du musst ja irgendwie die Dateien irgendwo reinladen, und dann ersetzten, wo lädst du die denn rein?
oder wählst du nur mit dem OpenDialog aus? |
Re: OpenDialg1 und OpenDialog2
Zitat:
|
Re: OpenDialg1 und OpenDialog2
Warum denn so umständlich? Datei 1 und 2 mit OpenDialog auswählen und mit CopyFile oder MoveFile operieren. Oder überseh ich gerade was? :gruebel:
|
Re: OpenDialg1 und OpenDialog2
... vielleicht noch prüfen ob es sich um das gleiche Verzeichnis handelt - dann nur Dateinamen von Datei 2 ändern und Datei 1 löschen. Sonst wie Muhkuh bereits vorgeschlagen hat.
|
Re: OpenDialg1 und OpenDialog2
Zitat:
|
Re: OpenDialg1 und OpenDialog2
Code is bisher Ziemlich Simple und sieht so aus:
Delphi-Quellcode:
Was muss ich für CopyFile und sowas machen? Iwie muss es ja umbenannt werden und dann die alte Datei ersetzen.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Edit2: TEdit; Button2: TButton; OpenDialog1: TOpenDialog; OpenDialog2: TOpenDialog; Button3: TButton; Button4: TButton; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Opendialog1.Execute; edit1.Text:=OpenDialog1.FileName; end; procedure TForm1.Edit1Change(Sender: TObject); Var a:string; begin end; procedure TForm1.Button2Click(Sender: TObject); begin OpenDialog2.Execute; edit2.Text:=OpenDialog2.FileName; end; procedure TForm1.Button4Click(Sender: TObject); begin Close; end; procedure TForm1.Button3Click(Sender: TObject); begin end; end. mfg |
Re: OpenDialg1 und OpenDialog2
Kannst du deinem Beitrag bitte einen aussagekräftigen Titel geben? Danke :-D
Auch ist es nicht gern gesehen wenn du innerhalb von 24 Stunden pushst. Als Pushen bezeichnet man, wenn jemand einen Beitrag durch einen neue Antwort nach oben bringt. Nutze zukünftig innerhalb so kurzer Zeit wenn noch kein anderer zwischenzeitlich etwas gepostet hat die Edit-Funktion. |
Re: Datei 1 mit Datei 2 ersetzen
1. Bitte gewöhne Dir eine durchschaubare Einrückung an, das macht den Code leichter lesbar.
2. Die Execute-Methode eines Dialogs ist eine Funktion, also sollte man den Rückgabewert auswerten. 3. Versuch mal, diese Funktion einzubinden (ohne Gewähr, da aus dem Kopf getippt):
Delphi-Quellcode:
function Umbenennen(const OldName, NewName: string): Boolean;
begin Result := MoveFileEx(PAnsiChar(OldName),PAnsiChar(NewName),MOVEFILE_REPLACE_EXISTING); end; |
Re: Datei 1 mit Datei 2 ersetzen
Iwie weiß ich net wie cih den jetzt genau ändern muss damit das ergebnis da sich haben will daraus kommt ?
mfg |
Re: Datei 1 mit Datei 2 ersetzen
sollte so funktionieren (Freestyle ohne Delphi)
Delphi-Quellcode:
obwohl ich den Funktionsnamen eher unpassend und irreführend finde.
const alteDatei = 'c:\alterName.txt';
neueDatei = 'c:\neuerName.txt'; begin if Umbenennen(alterName, neuerName) then ShowMessage('erfolgreich'); end; |
Re: Datei 1 mit Datei 2 ersetzen
Der Funktionsname lässt sich ja anpassen, seid doch nicht so unflexibel :?
|
Re: Datei 1 mit Datei 2 ersetzen
Jap, hast ja recht! :cheers:
Meine Delphi-Hilfe kennt leider kein
Delphi-Quellcode:
:gruebel:
MoveFileEx
Deshalb habe ich kurz ein paar Fragen: - ist ein verschieben über Laufwerke hinweg möglich? - werden die Datei und Sicherheitsattribute übernommen? LG Mario |
Re: Datei 1 mit Datei 2 ersetzen
In meiner Delphi 7-Hilfe steht die Funktion aber drin (OK, ist eine API-Funktion). Aber bitteschön:
![]() Ob die Attribute dabei übernommen werden, kann ich da auch nicht herauslesen, das muss man halt ausprobieren. |
Re: Datei 1 mit Datei 2 ersetzen
Danke für den Link! Ich muss dann wohl selber lesen wenn du dat nicht für mich testest :mrgreen:
Mir ist gerade aufgefallen das alle '....Ex' Funktionen in meiner Hilfe fehlen :roll: LG Mario |
Re: Datei 1 mit Datei 2 ersetzen
Im Menü:
Hilfe-> Windows SDK Dort auf das Register "INDEX" und dann eintippen was du suchst. Wenn du das nicht findest, ich hätte hier Netviewer, dann könnte ich dich fernwarten und es für dich demonstrieren.^^ |
Re: Datei 1 mit Datei 2 ersetzen
:wall: Klaro, ich Depp hatte in der Delphi-Hilfe statt im SDK gesucht.
Danke |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Windows API / MS.NET Framework API" verschoben.
Delphi-Frage |
Re: Datei 1 mit Datei 2 ersetzen
Komm leider nicht weiter ...
Ich weiß nicht wie ich noch was an deinem Code ändern muss damit er Datei 2 in einen Zwischenspeicher setzt ihn zu Dtei 1 bennent und ihn dann ersetzt. mfg |
Re: Datei 1 mit Datei 2 ersetzen
Wir haben Dir doch schon alles vorgekaut. Wo hapert es denn nun noch?
|
Re: Datei 1 mit Datei 2 ersetzen
Das erste worans hapert ist das Delphi sich über den begriff "const" beschwert..
Das zweite ist ich versuchs immer wie ich denke mit den Vorausgetellten Codes, jedoch kriege ich des einfach nicht fertig. Wenn einer von euch Zeit und Lust hätte könnte er mir es mit Teamviewer per Fernwartung Demonstireren sowas wäre echt klasse. mfg |
Re: Datei 1 mit Datei 2 ersetzen
Tach ...,
ok - dann ändere die Konstanten in Variablen um. Zitat:
Delphi-Quellcode:
Natürlich nicht vergessen Detlefs Funktion anzupassen!
var alteDatei, neueDatei: TFileName;
begin alteDatei:= 'c:\alterName.txt'; neueDatei:= 'c:\neuerName.txt' if Umbenennen(alteDatei, neueDatei) then ShowMessage('erfolgreich'); end;
Delphi-Quellcode:
Anmerkung: Diese Funktion funktioniert nur innerhalb eines LW (Adminrechte vorausgesetzt). Solltest du nicht als Admin arbeiten nimm einfach ein anderes Test-LW
function Umbenennen(OldName, NewName: string): Boolean;
|
Re: Datei 1 mit Datei 2 ersetzen
Hi Gonzo85,
ersetze in deinem Code einfach das hier:
Delphi-Quellcode:
durch dieses hier:
procedure TForm1.Button3Click(Sender: TObject);
begin end;
Delphi-Quellcode:
Funktioniert auch über Laufwerksgrenzen hinweg.
procedure TForm1.Button3Click(Sender: TObject);
begin if not CopyFile(PChar(Edit2.Text), PChar(Edit1.Text), False) then Application.MessageBox('Die Datei konnte nicht kopiert werden.', 'Fehler' , MB_ICONSTOP); end; Viele Grüsse, Macci |
Re: Datei 1 mit Datei 2 ersetzen
Delphi-Quellcode:
Das soll laut MSDN auch über Laufwerksgrenzen hinweg funktionieren.
function Umbenennen(const OldName, NewName: string): Boolean;
begin Result := MoveFileEx(PAnsiChar(OldName),PAnsiChar(NewName),MOVEFILE_REPLACE_EXISTING or MOVEFILE_COPY_ALLOWED); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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