Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie Kopiert man Dateien in den Projekt Ordner? (https://www.delphipraxis.net/142191-wie-kopiert-man-dateien-den-projekt-ordner.html)

Fussel9 23. Okt 2009 13:50


Wie Kopiert man Dateien in den Projekt Ordner?
 
Hi, habe für mein projekt einen kleinen editor erstellt und mit dem kann man sich via opendialog eine jpg oder ähnliches aussuchen über OpenPicDlg.FileName habe ich ja nun den Pfad zur Datei, aber wie kann ich diese Datei in den Projektordner Kopieren und am Besten noch Umbenennen?

DeddyH 23. Okt 2009 14:33

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
Wenn Du das Verzeichnis des eigenen Programms meinst, den kannst Du mit ExtractFilePath(ParamStr(0)) ermitteln, wobei Du als eingeschränkter Benutzer vermutlich Rechteprobleme bekommst, wenn das unter "C:\Programme" (oder wie das Programmeverzeichnis halt heit) liegt. Kopieren kannst Du mit CopyFile, umbenennen mit RenameFile.

Fussel9 23. Okt 2009 15:09

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
Ok mit CopyFile hab ich aber nen problem, das is nämlich nicht delphi... also zumindest meint 2006 dass und will das halb als parameter nen ansichar das macht hier nicht viel sinn:



Delphi-Quellcode:
CopyFile(AbschlussBild,'.\'+ExtractFileName(AbschlussBild),False);
        DeleteFile('.\ending.*');
        RenameFile('.\'+ExtractFileName(AbschlussBild),'.\'+'ending.*');
Hier gibt er an : [Pascal Fehler] UEdit.pas(46): E2010 Inkompatible Typen: 'string' und 'PAnsiChar'

DeddyH 23. Okt 2009 15:18

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
CopyFile erwartet in den ersten beiden Argumenten PAnsiChars. Und ".\" ist nicht unbedingt das Anwendungsverzeichnis.
Delphi-Quellcode:
if CopyFile(PAnsiChar(AbschlussBild),PAnsiChar(ExtractFilePath(ParamStr(0)) + ExtractFileName(AbschlussBild)),False) then
  begin
    DeleteFile(ExtractFilePath(ParamStr(0)) + 'ending.*');
    RenameFile(ExtractFilePath(ParamStr(0)) + ExtractFileName(AbschlussBild),ExtractFilePath(ParamStr(0)) + 'ending.*');
  end
else
  MessageBox(0,PAnsiChar(SysErrorMessage(GetLastError)),'Fehler',MB_OK or MB_ICONERROR);

himitsu 23. Okt 2009 15:33

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
und sicher daß das mit dem * im Dateinamen so überhaupt geht?

DeddyH 23. Okt 2009 15:35

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
Stimmt, ich hatte das beim Tippen für einen Dummy-Platzhalter gehalten.

Luckie 23. Okt 2009 15:37

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
MSDN-Library durchsuchenCopyFile akzeptiert keine Platzhalter und Wildcards. Und das Verwenden von relativen Pfade ist immer ein Spiel mit dem Feuer!

Fussel9 23. Okt 2009 15:38

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
Ok Danke , jetzt habe ich nur noch ein Problem:

Nachdem das eigentliche Programm endet öffnet sich ein weiteres Formular dieses ruft einen MessageDlg auf (via timer) in dem man gefragt wird ob man den editor öffnen will man klickt auf ja und der editor öffnet sich, aber dann kommt der message Dlg plötzlich wieder und wieder und wieder.... obwohl ich folgendes geschrieben habe:

Delphi-Quellcode:
    begin
      Close;
      Editor:=TEditor.create(self);
      Editor.Show;
    end;
Ich habe es auch schon mit self.Free self.Destroy self.Close und LTimer.Enabled:=False versucht, ohne erfolg



P.S.: Erklärt das mal meinem Info Lehrer bei dem lernen wir es mit relativen Pfaden und da habe ich ihm erzählt was man mier hier schon einmal in einer langen diskusion vermittelt hat... er meinte der relative pfad könne sich nicht ändern ... und die hand die einen füttert beißt man besser nicht zu oft...

DeddyH 23. Okt 2009 15:42

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
Kapier ich nicht. Welches Programm endet und wozu der Timer?

Luckie 23. Okt 2009 15:43

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
1. Satzzeichen erfüllen einen Zweck. Sie erhöhen die Verständlichkeit eines Satzes. Das weglassen von Satzzeichen bewirkt meist genau das Gegenteil.
2. Aus den drei Zeilen Code kann man nicht viel sehen. Wann werden sie aufgerufen? Wo werden sie aufgerufen? Und in welchem Zusammenhang werden sie aufgerufen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr.
Seite 1 von 2  1 2      

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