deleted
Übersicht

suberrorBetreff: deleted |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
gelöscht | ||
- Zuletzt bearbeitet von suberror am Sa, Mai 06, 2017 16:18, insgesamt einmal bearbeitet
![]() |
rema |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weiss es zwar nicht 100% da ich auf Mac arbeite, aber ich denke du solltest nicht die Variabel übergeben, sondern einen Byte Pointer:
Code: [AUSKLAPPEN] Extern "Win32"
Function GetComputerName:Int(lpBuffer:byte ptr,nSize:Int)="GetComputerNameA@8" End Extern Da die Variabel verschieden lang sein kann als @8Byte. Und so hast du mit BytePtr und Int genau 8 Byte... Ich weiss, ist nicht sehr gut erklärt... |
||
suberror |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
gelöscht | ||
- Zuletzt bearbeitet von suberror am Sa, Mai 06, 2017 16:18, insgesamt einmal bearbeitet
![]() |
rema |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry, vergessen. String gibts ja in diesem sinne nicht. Du musst ein leeres Array erzeugen.
local CName:string[] Hier gibts mehr zu lesen: http://www.blitzwiki.org/index.php/C_CallBacks |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der String muß schon in der max. länge im Speicher sein und
dann übergibst du den Pointer vom String . Die Rückgabe der länge ist die echte länge und dann mußt du den String mit x=Left$(x,nSize) wieder kürzen . Also eher so local CName:string[MAX_COMPUTERNAME_LENGTH] nSize ist als Parameter byref also da wird der Wert wieder zurück geschrieben . VB6 Code: [AUSKLAPPEN] Private Const MAX_COMPUTERNAME_LENGTH As Long = 31 Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long Private Sub Form_Load() Dim dwLen As Long Dim strString As String 'Create a buffer dwLen = MAX_COMPUTERNAME_LENGTH + 1 strString = String(dwLen, "X") 'Get the computer name GetComputerName strString, dwLen 'get only the actual data strString = Left(strString, dwLen) 'Show the computer name MsgBox strString End Sub |
||
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Markus: Das ist falsch. Damit erstellst du nur ein Array mit Strings.
Man braucht ja nur einen Speicherbereich mit 32 bytes, damit er den Computernamen drin speichern kann. So muss es normalerweise funktionieren, geht aber trotzdem nicht. Der Fehler liegt wohl wo anders, es ist egal mit was man die Funktion füttert, Fehler. Code: [AUSKLAPPEN] Strict Const MAX_COMPUTERNAME_LENGTH = 31 Extern "Win32" Function GetComputerName:Int(lpBuffer:Byte Ptr, nSize:Int)="GetComputerNameA@8" End Extern Local Buf:Byte Ptr = MemAlloc(MAX_COMPUTERNAME_LENGTH+1) Local size:Int = GetComputerName(Buf, MAX_COMPUTERNAME_LENGTH) 'GetComputerName(Null, 0) '<- Sollte einfach nur 0 zurückgeben, verursacht aber auch nen Fehler Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Em,ja,
meinte ich so ![]() Code: [AUSKLAPPEN] Strict Const MAX_COMPUTERNAME_LENGTH = 31 Extern "Win32" Function GetComputerName:Int(lpBuffer:Byte Ptr,nSize:Int Ptr)="GetComputerNameA@8" End Extern Local Buf:Byte Ptr = MemAlloc(MAX_COMPUTERNAME_LENGTH+1) Local size:Int size= MAX_COMPUTERNAME_LENGTH GetComputerName(Buf,Varptr size) DebugLog "Size="+size If size Then DebugLog String.FromBytes(Buf,size) |
||
suberror |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
gelöscht | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group