AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Kopieren mit Opendialog.Filename nicht möglich
Thema durchsuchen
Ansicht
Themen-Optionen

Kopieren mit Opendialog.Filename nicht möglich

Ein Thema von Larsi · begonnen am 15. Dez 2009 · letzter Beitrag vom 15. Dez 2009
Antwort Antwort
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#1

Kopieren mit Opendialog.Filename nicht möglich

  Alt 15. Dez 2009, 13:20
Hi,
ich möchte, dass der Benutzer eine Datei auswählen kann (mit OpenDialog) welche dann an einen bestimmten Ort kopiert wird. Falls die Datei dort schon vorhanden ist soll sie überschrieben werden. Hier mal der Code:

Delphi-Quellcode:
if OpenDialog1.execute then begin
if Fileexists('test.abc') then
DeleteFile('test.abc');
Copyfile(Pchar(Opendialog1.filename), Pchar('test.ab'), true);
end;
Die Datei wird aber nicht kopiert. Selbst wenn keine andere Datei vorher da war. Woran kann das liegen? Mit richtigen Dateinamen (also mit C:\ blabla davor) gehts auch nicht. Verhindert der Opendialog das kopieren, da er selber die Datei reserviert oder so?

MFG Lars Wiltfang
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Kopieren mit Opendialog.Filename nicht möglich

  Alt 15. Dez 2009, 13:24
Keine relativen Pfade verwenden (das wird hier mindestens einmal die Woche gesagt) und ansonsten einmal GetLastError bemühen. Übrigens musst Du die Zieldatei nicht vorher löschen, wenn Du Dir die Parameter von CopyFile einmal in Ruhe anschaust.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Kopieren mit Opendialog.Filename nicht möglich

  Alt 15. Dez 2009, 13:33
ShowMessage(GetLastError); Da steht 0.
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#4

Re: Kopieren mit Opendialog.Filename nicht möglich

  Alt 15. Dez 2009, 13:34
Zitat von DeddyH:
Keine relativen Pfade verwenden (das wird hier mindestens einmal die Woche gesagt)
der Grund: der Opendialog verändert das aktuelle Arbeitsverzeichnis des Programms und relative Pfade sind relativ zu diesem aktuellen Arbeitsverzeichnis.


Zitat von Larsi:
ShowMessage(GetLastError); Da steht 0.
und wonach hattest du dieses abgefragt?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Kopieren mit Opendialog.Filename nicht möglich

  Alt 15. Dez 2009, 13:34
Hallo,

Delphi-Quellcode:
if OpenDialog1.execute then
begin
  if FileExists('test.abc') then
  begin
    DeleteFile('test.abc');
  end;
  Copyfile(Pchar(Opendialog1.filename), Pchar('test.ab'), true);
end;
2 mal 'test.abc'
1 mal 'test.ab'

???

Ich würde bei 3mal der gleichen Datei
eh eine Variable/Konstante nehmen.

Das mit den absoluten Pfaden hast du ja schon gelesen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Kopieren mit Opendialog.Filename nicht möglich

  Alt 15. Dez 2009, 13:37
Und nun zusammengefasst:
Delphi-Quellcode:
const MyFilename = 'test.abc';
...
if OpenDialog1.execute then begin
  if not Copyfile(Pchar(Opendialog1.filename), Pchar(IncludeTrailingPathDelimiter(MyPath) + MyFilename), false) then
    MessageBox(0,PChar(SysErrorMessage(GetLastError)),nil,MB_OK or MB_ICONERROR);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#7

Re: Kopieren mit Opendialog.Filename nicht möglich

  Alt 15. Dez 2009, 18:26
DeddyH hat´s endlich hingekriegt den aus dem OpenDialog übergebenen Filenamen zu verwenden...
aber warum die Konstante für die Zieldatei ? Wenn ich eine Datei kopiere möchte ich auch, daß sie so heißt wie vorher.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#8

Re: Kopieren mit Opendialog.Filename nicht möglich

  Alt 15. Dez 2009, 19:01
Dann nimm halt den Dateinamen
Delphi-Quellcode:
if OpenDialog1.execute then begin
  if not Copyfile(Pchar(Opendialog1.filename), Pchar(IncludeTrailingPathDelimiter(MyPath) + ExtractFileName(opendialog1.filename)), false) then
    MessageBox(0,PChar(SysErrorMessage(GetLastError)),nil,MB_OK or MB_ICONERROR);
end;
Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz