Delphi-PRAXiS

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?

Fussel9 23. Okt 2009 15:47

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
Ok wenn bei der MainForm ein Button mit der aufschrift Schließen geklickt wird passiert folgendes:

ein fenster öffnet sich das eine grafik zeigt ein Timer ist in dieser form sein delay ist 3000-->

Delphi-Quellcode:
procedure TFLemon.TLemonTimer(Sender: TObject);
var Editor: TEditor;
begin
if a <> 1 then
  begin
    LLizenz.Visible:=True;
    a:=1;
  end
else
  begin
    if MessageDlg('Willst du selbst eine Grußkarte erstellen?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
    begin
      Close;
      Editor:=TEditor.create(self);
      Editor.Show;
    end;
  end;
end;

himitsu 23. Okt 2009 15:57

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Klar, wenn du den Timer nicht mehr abstellst, dann ruft er deinen Code immer wieder auf :zwinker:
[edit] hmmmm :gruebel: ... hab nun das Close gesehn


und im Anhang noch was für deinen Lehrer:
er soll mal die EXE und dann auch mal die Batchdatei im Unterverzeichnis "Anders" aufrufen
dann sieht er (sollte er zumindestens), was mit seinen geliebten unveränderlichen relativen Pfaden passiert.

Fussel9 23. Okt 2009 16:05

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
Och man... und nu? Dachte ich krieg das jetz noch fertig :gruebel:
muss gleich weg... :(

Luckie 23. Okt 2009 16:28

Re: Wie Kopiert man Dateien in den Projekt Ordner?
 
Hier http://www.delphipraxis.net/internal...t.php?t=167227 geht es anscheinend weiter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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