![]() |
Computernamen auslesen unter RAD 2009 und Vista
Hallo zusammen,
habt ihr eine Idee, wie ich die folgende Funktion (unter Delphi 2006 geht diese) unter RAD 2009 zum laufen bekomme? In Computername steht nicht der richtige Computername drinne (zwischen den Zeichen sind immer #0 ansonsten würde der Name passen). Danke schonmal und viele Grüße Alex
Delphi-Quellcode:
var
CName : Array [0..255] of Char; nSize : Cardinal; ComputerName : String[MAX_COMPUTERNAME_LENGTH]; begin if GetComputerName (CName, nSize) then begin SetLength (ComputerName, nSize); if nSize > Length (ComputerName) then nSize := Length (ComputerName); Move (CName, ComputerName[1], nSize); end; end; |
Re: Computernamen auslesen unter RAD 2009 und Vista
Versuch mal
Delphi-Quellcode:
ComputerName : AnsiString[MAX_COMPUTERNAME_LENGTH];
|
Re: Computernamen auslesen unter RAD 2009 und Vista
ANSI
Delphi-Quellcode:
WIDE
var
nSize: Cardinal; lName: AnsiString; begin nSize := MAX_COMPUTERNAME_LENGTH; SetLength(lName, nSize+1); if GetComputerNameA(lName, nSize) then begin SetLength(lName, nSize); end; end;
Delphi-Quellcode:
var
nSize: Cardinal; lName: WideString; begin nSize := MAX_COMPUTERNAME_LENGTH; SetLength(lName, nSize+1); if GetComputerNameW(lName, nSize) then begin SetLength(lName, nSize); end; end; |
Re: Computernamen auslesen unter RAD 2009 und Vista
Autsch. An den paar Zeilen Code ist so ziemlich alles Falsch was man in Bezug auf Portierung nach D2009 falsch machen kann:
1, Dir sollte klar sein das in D2009 Char = 2Byte hat! 2, String ist ebenfalls jetzt ein Unicodestring mit jedem Zeichen = 2 Byte. Jedoch ist String[Länge] immer noch ein kurzer Ansi-String. 3, Mit Move(...) verwendest du eine Typlose Speicherkopieroperation welche dem Compiler jedliche Chance nimmt dir per Warnung mitzuteilen das hier was nicht passt (Kopieren von PWideChar auf einen Speicherbereich eines AnsiStrings). |
Re: Computernamen auslesen unter RAD 2009 und Vista
Danke :-)
Die AnsiVersion von Muetze1 geht :-) Hatte die Funktionen GetComputerNameA und W gar nicht gesehen... @Bernhard: Ich weiß, dass dieser Code für 2009 nicht geeignet ist. Es war ja auch ein Beispiel aus 2006 :-) Danke nochmals |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz