CopyFile [Gelöst]

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

CopyFile [Gelöst]

Beitrag 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
Zuletzt geändert von Tsuki-Namida am 19.02.2008 19:19, insgesamt 1-mal geändert.
Bild
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Wenn ich das richtig sehe, gibts du als Copy-Zielort nur den Ordner an.

Du musst dahinter noch einen Dateinamen setzen. ;)
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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 -.-
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Re: CopyFile [Gelöst]

Beitrag 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()
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten