AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Den richtigen Computernamen ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Den richtigen Computernamen ändern

Ein Thema von RWarnecke · begonnen am 30. Mai 2006 · letzter Beitrag vom 10. Jun 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#11

Re: Den richtigen Computernamen ändern

  Alt 9. Jun 2006, 14:15
Hi!

Was heißt "streikt"?
Gibts Fehlermeldungen? Wie sieht die Procedure wirklich aus? (die ??? gehören da ja eigentlich nicht hin, oder?)


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#12

Re: Den richtigen Computernamen ändern

  Alt 9. Jun 2006, 14:22
Die Funktion gibt ja TRUE oder FALSE zurück, wenn der Computername gesetzt wurde oder nicht. Die Funktion SetComputerNameEx gibt grundsätzlich TRUE zurück, wenn ich es so schreibe :
SetComputerNameEx(ComputerNamePhysicalDnsHostname,'Globi'); Die Funktion gibt FALSE zurück, wenn ich die Funktion so aufrufe :
Delphi-Quellcode:
SetComputerNameEx(ComputerNamePhysicalDnsHostname,PChar(Name));

// oder :

SetComputerNameEx(ComputerNamePhysicalDnsHostname,Name);
Wobei ich glaube, dass bei der zweiten Version sogar der Fehler aufgetreten ist, das PChar nicht mir String kompatibel ist. Es gibt keinerlei Fehlermeldungen, wenn die Funktion ein FALSE zurückgibt.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#13

Re: Den richtigen Computernamen ändern

  Alt 9. Jun 2006, 14:32
Probier mal das:

Zitat:
If the function fails, the return value is zero. To get extended error information, call GetLastError.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#14

Re: Den richtigen Computernamen ändern

  Alt 9. Jun 2006, 14:34
Wie Du ja schon gesehen hast, bin ich absoluter API-Newbie, könntest Du mir das mal bitte Anhand eines Beispiels erklären mit dem GetLastError ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Den richtigen Computernamen ändern

  Alt 9. Jun 2006, 14:42
Ist eine Delphi Funktion:

Delphi-Quellcode:
Returns the last error reported by an operating system API call.

Unit

System

Category

exception handling routines

function GetLastError: Integer; stdcall;

Description

GetLastError returns the last error reported by an API call into the operating system. Calling this function usually resets the operating system error state.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#16

Re: Den richtigen Computernamen ändern

  Alt 9. Jun 2006, 16:45
Zitat von Klaus01:
Ist eine Delphi Funktion
Ganz sicher nicht!

Daß MSDN-Library durchsuchenSetComputerNameEx Beschränkungen hinsichtlich des Namens (insbesondere des DNS-Namens) hat, ist dir aber schon beim Durchlesen der Doku klargeworden?

Zitat:
[in] The new name. The name cannot include control characters, leading or trailing spaces, or any of the following characters: " / \ [ ] : | < > + = ; , ?

... übrigens, Rolf, etwas mehr Eigeninitiative können wir wohl von dir erwarten, oder? Kleiner Tip: ich habe lange bevor die DP existierte mit Delphi angefangen, da gab's niemanden der einem irgendwas vorgekaut hat so wie du es willst. Es gilt auch in Foren noch: RTFM - dann fragen.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#17

Re: Den richtigen Computernamen ändern

  Alt 9. Jun 2006, 17:17
Zitat von Olli:
Daß MSDN-Library durchsuchenSetComputerNameEx Beschränkungen hinsichtlich des Namens (insbesondere des DNS-Namens) hat, ist dir aber schon beim Durchlesen der Doku klargeworden?

Zitat:
[in] The new name. The name cannot include control characters, leading or trailing spaces, or any of the following characters: " / \ [ ] : | < > + = ; , ?
Mir ist das schon klar, das SetComputerNameEx Beschränkungen hinsichtlich des Namens hat. Denn ich habe mir die Beschreibung zu dem Befehl schon durchgelesen.

Zitat von Olli:
... übrigens, Rolf, etwas mehr Eigeninitiative können wir wohl von dir erwarten, oder? Kleiner Tip: ich habe lange bevor die DP existierte mit Delphi angefangen, da gab's niemanden der einem irgendwas vorgekaut hat so wie du es willst. Es gilt auch in Foren noch: RTFM - dann fragen.
Eigeninitiative zeige ich schon. Denn wenn ich eine Frage hier stelle, dann habe ich schon vorher etwas ausprobiert. Desweiteren, wenn ich nur einen Befehl um die Ohren gehauen bekomme und ich den nicht kenne, dann kann ich ja wohl nach einem kleinen Beispiel fragen, zumal es meine Eigenart ist, dass ich aus einem Beispiel viel besser lerne. Noch dazu fange ich gerade erst an mit der MSDN zu arbeiten. Ich habe die vorher noch nie richtig benutzt oder mir war es nie so richtig bewusst, dass ich eventuell die API benutzt habe. Das heißt ich bin ein absoluter Anfänger. Einem Anfänger gestehe ich schon mal etwas "dumme" Fragen. Es kommt auch noch dazu, das ich nicht nur alleine hier schaue, sondern auch in Google suche und auf andere Delphi-Seiten gehe und mir dort Informationen hole.

So nun aber wieder zum Thema zurrückzukommen. Ich habe mir jetzt mit GetLastError den Fehlercode anzeigen lassen.
Zitat:
Fehlercode 87 ---> ERROR_INVALID_PARAMETER
Dieses ist mir nicht ganz klar. Die Deklaration der Funktion sieht ja so aus :
Delphi-Quellcode:
Function SetComputerNameEx
                                  (
                                    NameType : COMPUTER_NAME_FORMAT;
                                    lpBuffer : PChar
                                  ) : BOOL; StdCall; External kernel32 Name 'SetComputerNameExA';
Ich rufe die Funktion so auf mit einer Variable Seriennummer, die als String deklariert ist, auf :
SetComputerNameEx(ComputerNamePhysicalDnsHostname,PChar(Seriennummer)); Der Inhalt der Seriennummer entspricht den Regeln aus der MSDN von dem Befehl SetComputerNameEx. Jetzt kommt der oben angegebene Fehlercode. Wenn ich das ganze so aufrufe :
SetComputerNameEx(ComputerNamePhysicalDnsHostname,'Globi'); Dann führt er mir die Funktion einwandfrei aus. Habe ich da irgendwo einen Denkfehler drin, oder mache ich etwas falsch ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Den richtigen Computernamen ändern

  Alt 9. Jun 2006, 17:19
von welchem Typ ist Seriennummer? und hast du mal debuggt das in Seriennummer auch zu 100% das drin steht was drin stehen soll?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#19

Re: Den richtigen Computernamen ändern

  Alt 9. Jun 2006, 17:21
In Seriennummer stehen zu 100% Sicherheit nur Buchstaben und Zahlen drin und Seriennummer ist nicht länger als 13 Zeichen. Und die Variable Seriennummer ist vom Typ String.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#20

Re: Den richtigen Computernamen ändern

  Alt 9. Jun 2006, 17:26
Zitat von RWarnecke:
Das heißt ich bin ein absoluter Anfänger. Einem Anfänger gestehe ich schon mal etwas "dumme" Fragen. Es kommt auch noch dazu, das ich nicht nur alleine hier schaue, sondern auch in Google suche und auf andere Delphi-Seiten gehe und mir dort Informationen hole.
Anfänger seit 1,5 Jahren? Nix für ungut ...

Zitat von RWarnecke:
So nun aber wieder zum Thema zurrückzukommen. Ich habe mir jetzt mit GetLastError den Fehlercode anzeigen lassen.
Zitat:
Fehlercode 87 ---> ERROR_INVALID_PARAMETER
Voila, wie schon gesagt, es ist doch der Name. Wie lang ist denn "Seriennummer"? Poste doch mal eine, wo du zahlen duch 123 und Buchstaben durch ABC ersetzt. So können wir uns ein Bild machen ...

Zitat von RWarnecke:
SetComputerNameEx(ComputerNamePhysicalDnsHostname,PChar(Seriennummer));
oder
SetComputerNameEx(ComputerNamePhysicalDnsHostname,@Seriennummer[1]);
Zitat von RWarnecke:
Der Inhalt der Seriennummer entspricht den Regeln aus der MSDN von dem Befehl SetComputerNameEx.
Unwahrscheinlich, wieso dann ein Fehler?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 18:44 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