AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Computernamen auslesen unter RAD 2009 und Vista
Thema durchsuchen
Ansicht
Themen-Optionen

Computernamen auslesen unter RAD 2009 und Vista

Ein Thema von Alex_ITA01 · begonnen am 2. Mär 2009 · letzter Beitrag vom 2. Mär 2009
Antwort Antwort
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

Computernamen auslesen unter RAD 2009 und Vista

  Alt 2. Mär 2009, 14:07
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;
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Computernamen auslesen unter RAD 2009 und Vista

  Alt 2. Mär 2009, 14:08
Versuch mal
ComputerName : AnsiString[MAX_COMPUTERNAME_LENGTH];
Markus Kinzler
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Computernamen auslesen unter RAD 2009 und Vista

  Alt 2. Mär 2009, 14:11
ANSI

Delphi-Quellcode:
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;
WIDE

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;
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Computernamen auslesen unter RAD 2009 und Vista

  Alt 2. Mär 2009, 14:21
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).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#5

Re: Computernamen auslesen unter RAD 2009 und Vista

  Alt 2. Mär 2009, 14:24
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
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz