Seite 1 von 2

CreateHardLink_() is not a function, an array or a linked...

Verfasst: 31.12.2005 13:21
von uweb
Hi,

Code: Alles auswählen

CreateHardLink_("test01.BMP", "test02.BMP", 0)
funktiert nicht.

Hat mir jemand einen Tipp wie ich es doch noch zum laufen bringe ?

http://msdn.microsoft.com/library/defau ... rdlink.asp

Verfasst: 31.12.2005 14:04
von Andre
Vermutlich wird der WinAPI-Befehl (bisher) nicht nativ unterstützt.
Wirst Du wohl über den Umweg mit LoadLibrary() die entsprechende M$-Dll öffnen und darüber die Funktion aufrufen müssen.

Verfasst: 31.12.2005 14:16
von uweb
Danke !!!

Ich habe mit LoadLibrary() bisher noch nichts gemacht.
Aber, jetzt habe ich zumindest einen Ansatz.

Verfasst: 31.12.2005 14:50
von uweb

Code: Alles auswählen

Enumeration
  #LinkToKernel32Lib
EndEnumeration

File01.s="test01.BMP"
File02.s="test02.BMP"

If OpenLibrary(#LinkToKernel32Lib, "kernel32.dll")
CHL = CallFunction(#LinkToKernel32Lib, "CreateHardLink", File01, File02, 0)

    If CHL
         MessageRequester("Ergebnis", "CreateHardLink_ ausgeführt")
    Else
         MessageRequester("Ergebnis", "CreateHardLink_ NICHT ausgeführt - Quelldatei vorhanden ?")
  EndIf 

EndIf
Ok, jetzt läßt es sich kompilieren.
Aber funktionieren will es noch nicht.
Da die EXE und test01.BMP im Hauptverzeichnis eines NTFS-Laufwerks liegen vermute ich den Fehler eher in einer nicht beachteten API-Konvention.

Verfasst: 31.12.2005 14:53
von ts-soft
Laut MSDN lautet der Funktionsname "CreateHardLinkA" für ANSI

Verfasst: 31.12.2005 14:59
von uweb
Danke, aber am Ergebnis ändert das nichts.
Ich muß da noch einen anderen Fehler gemacht haben.

Verfasst: 31.12.2005 15:16
von Zaphod
manche api funktionsnamen sind unter pb geringfügig anders. da gab es manchmal einen prefix. ich glaube das hatte damit zu tun, dass purebasic irgendwelche bestandteile von lcc benutzt hat.

Verfasst: 31.12.2005 15:45
von edel
Tausch mal die Quell- mit der Zieldatei. Zieldatei darf nicht vorhanden sein.
Wie ts-soft schon schrieb : CreateHardLinkA nutzen .

Verfasst: 31.12.2005 15:47
von uweb
Danke !

Leider konnte ich dazu nichts passendes finden.
Zwei neue Gedanken werfen zwei neue Fragen auf :

1. Zum letzten Parameter ( Reserved; must be NULL )
- Ist NULL in dem Fall gleich 0 ?

2. Funktioniert das bei jemand anderem ?

Code: Alles auswählen

Enumeration
  #LinkToKernel32Lib
EndEnumeration

File01.s="test01.BMP"
File02.s="test02.BMP"

If OpenLibrary(#LinkToKernel32Lib, "KERNEL32.DLL")
CHL = CallFunction(#LinkToKernel32Lib, "CreateHardLinkA", File01, File02, 0)

    If CHL
         MessageRequester("Ergebnis", "CreateHardLinkA_ ausgeführt")
    Else
         MessageRequester("Ergebnis", "CreateHardLinkA_ NICHT ausgeführt - Quelldatei vorhanden ?")
  EndIf 

EndIf

Verfasst: 31.12.2005 15:52
von uweb
hallodri`s Tipp war der letzte Schritt zum Ziel.

Es funktioniert !

Danke noch einmal an alle.