Seite 1 von 1

CopyFile [Gelöst]

Verfasst: 19.02.2008 18:19
von Tsuki-Namida
hallo ich schon wieder -.-
ich habe probleme beim kopierenvon einer existenten datei in ein anderes verzeichnis...

ich meinem projekt ordner habe ich das verzeichnis "RT" und ein weiteres Verzeichnis "Projekt"
und ich möchte aus dem RT Ordner eine dll in das "Projekt\[Unterordner]" kopieren. nur ich bekomme immer die fehlermeldung die ich im "wenn nicht kopiert werden konnte" fall angegeben ist... aber der syntax stimmt und das verzeichnis "Projekt\[Unterordner]" ist auch existent....

hier der code aus schnitt:

Code: Alles auswählen

If CreateDirectory(GetGadgetText(#Neu_ProjektVerzeichnis)+PV$)
  If CreateDirectory(GetGadgetText(#Neu_ProjektVerzeichnis)+PV$+"\Data")
    If CopyFile(GetExePath()+"RT\rt_dll.dll",GetGadgetText(#Neu_ProjektVerzeichnis)+PV$)
     CreateFile(0,"Data\Projekt.inf")
     WriteStringN(0,"Name: "+PN$)
     CloseFile(0)
   Else
     MSG("ERROR","Die Datei 'rt_dll.dll' konnte leider nicht Kopiert werden. Überprüfen Sie ob Sie die nötigen schreibrechte auf diesem Datenträger haben und versuchen Sie es erneut.",1,#NeuWindow)
   EndIf
 Else
   MSG("ERROR","Der 'Data' Ordner konnte nicht erstellt werden. Überprüfen Sie ob Sie die Nötigen schreibrechte auf diesem Datenträger haben und versuchen Sie es erneut.",1,#NeuWindow)
 EndIf
Else
  MSG("ERROR","Es ist ein Fehler beim Erstellen des Ordners '"+PV$+"' aufgetreten. Überprüfen Sie ob Sie die nötigen schreibrechte haben und versuchen Sie es erneut.",1,#NeuWindow)
EndIf
damit jetzt keiner sagen kann das, das an "GetExePath()" liegt sage ich gleich das, ich diese procedure zwar hier im Forum gefunden habe aber etwas abgeändert habe hier der code:

Code: Alles auswählen

Procedure.s GetExePath()
  Prg.s = Space(#MAX_PATH)
  GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
  Prg = GetPathPart(Prg)
  If (FindString(prg,"\PureBasic\Compilers\", 1))
    Prg.s = Space(#MAX_PATH)
    GetCurrentDirectory_(#MAX_PATH,@Prg)
  EndIf
If Right(Prg, 1) <> "\" : Prg + "\" : EndIf
If #PB_Compiler_Debugger = 1
  ProcedureReturn "E:\Eigene Dateien\Programmieren\QuellentextPB40\Projekt\Editor\"
Else
  ProcedureReturn Prg
EndIf
  teste$ = Prg.s
EndProcedure

Verfasst: 19.02.2008 19:12
von Franky
Wenn ich das richtig sehe, gibts du als Copy-Zielort nur den Ordner an.

Du musst dahinter noch einen Dateinamen setzen. ;)

Verfasst: 19.02.2008 19:14
von Tsuki-Namida
echt? okay ich versuche es mom

[Edit]
stimmt -.- *hand auf die Stirn klatsch*

toll ich sollte mal genauer die hilfe lesen -.- sorry @Admin oder Mod -.- das thema kann gelöscht werden...

ich stelle ganz bestimmt nich noch mal sone dämliche frage.... Versprochen...

und Franky danke noch mal für deine hilfe -.-

Re: CopyFile [Gelöst]

Verfasst: 19.02.2008 19:44
von AND51
Magix-Soft <Kain> hat geschrieben:

Code: Alles auswählen

Procedure.s GetExePath()
  Prg.s = Space(#MAX_PATH)
  GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
  Prg = GetPathPart(Prg)
  If (FindString(prg,"\PureBasic\Compilers", 1))
    Prg.s = Space(#MAX_PATH)
    GetCurrentDirectory_(#MAX_PATH,@Prg)
  EndIf
If Right(Prg, 1) <> "" : Prg + "" : EndIf
If #PB_Compiler_Debugger = 1
  ProcedureReturn "E:\Eigene Dateien\Programmieren\QuellentextPB40\Projekt\Editor"
Else
  ProcedureReturn Prg
EndIf
  teste$ = Prg.s
EndProcedure
Ist es so vielleicht einfacher und plattformunabhängiger? :allright:

Code: Alles auswählen

Procedure.s GetExePath()
	Protected prg.s=GetPathPart(ProgramFilename())
	If FindString(prg, "\PureBasic\Compilers", 1)
		prg=GetPathPart(GetCurrentDirectory())
	EndIf
	If #PB_Compiler_Debugger = 1
		ProcedureReturn "E:\Eigene Dateien\Programmieren\QuellentextPB40\Projekt\Editor"
	EndIf
	ProcedureReturn prg
EndProcedure

Debug GetExePath()