Announcement

Collapse
No announcement yet.

Computername auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Computername auslesen

    Hi Leute,<br><br>
    Warum klappt das nicht:<br><br>
    var<br>
    Computername : pchar;<br>
    test : Cardinal;<br><br>
    if GetComputerName(Computername, test) then
    application.MessageBox(computername, 'Test', 1);<br><br>
    GetComputerName gibt immer false zurück. Ich habe einen Win2000 Rechner. Laufen sollte es aber auf Win95 / Win98 / Win98SE / Win2K und WinME sowie auf WinXP. Also die ganze Windoofs Palette. Gibts da ne gute Alternative?<br><br>Bye Frank

  • #2
    Moin Frank,<br>
    <br>
    der Buffer muss auch initialisiert werden:<br>
    <br>
    <pre>
    var
    pName : PChar;
    nSize : DWORD;

    begin
    nSize := MAX_COMPUTERNAME_LENGTH + 1;
    pName := StrAlloc(nSize);
    try
    if GetComputerName(pName,nSize) then
    begin
    ShowMessage(pName);
    end;
    finally
    StrDispose(pName);
    end;
    end;
    </pre>
    <br>
    Ciao<br>
    Chri

    Comment


    • #3
      Danke klappt ;-

      Comment


      • #4
        Moin,
        wie lese ich bitte die Arbeitsgruppe & Kommentar unter XP aus? Ich habe es mit der Funktion GetComputerNameEx versucht, aber wenn ich versuche sie einzubinden, erhalte ich die Fehlermeldung, dass Kernel32.dll diese nicht exportiert

        Comment


        • #5
          Moin Affligem,<br>
          <br>
          die Funktion GetComputerNameEx gibt es sowohl als ANSI (GetComputerNameEx<b>A</b>), als auch als Unicode Version (GetComputerNameEx<b>W</b>).<br>
          Du müsstest also einen von diesen beiden Bezeichnern benutzen.<br>
          <br>
          Ciao<br>
          Chri

          Comment


          • #6
            oko

            Comment


            • #7
              Hi,<p>
              das sollte nicht notwendig sein. Meines Wissens nach erkennt das System selbst, ob es intern die Variante A (Ansi) oder W (Widechar) benutzen muß. Bei allen API-Aufrufen, die ich bisher benutzt habe und bei denen es diese beiden "Unter"-Varianten gibt, hat diese Unterscheidung automatisch stattgefunden.<br>
              Es sollte also ausreichen, GetComputerNameEx aufzurufen.<br>
              (Kleine Einschränkung: Ich teste meine Programme nur unter Win98 und Win2000. Möglicherweise muß man bei XP diese Unterscheidung treffen.)<p>
              Grüße, Reimun

              Comment


              • #8
                Moin Reimund,<br>
                <br>
                ich denke mal, dass Du von API Funktionen sprichst, deren Deklaration von Borland schon erledigt wurde, die Du also nicht selber importierst (z.B. dynamisch mittels LoadLibrary/GetProcAddress).<br>
                Zumindest bei D5 werden in der deutschen Version standardmässig die ANSI Versionen eingebunden, wenn es beide gibt.<br>
                Importierst Du die Funktionen selbst, musst Du exakt den richtigen Namen angeben (incl. Gross-/Kleinschreibung), sonst kann die Funktion nicht gefunden werden.<br>
                Eine automatische Unterscheidung kann auch gar nicht stattfinden, denn wie sollte das Betriebssystem entscheiden, ob Du nun die ANSI oder die Unicode Version haben willst? In Windows 2000 sind, üblicher Weise, beide Versionen enthalten<br>
                <br>
                Ciao<br>
                Chri

                Comment


                • #9
                  Ich glaube, Du hast Recht. Denn irgendwas importiert hab ich noch nicht, wenn ich API-Funktionen verwende.<br>
                  Deshalb ziehe ich meinen vorherigen Kommentar mit einem unschuldigen Dackelblick zurück. <p>
                  P.S. Und es vergeht kaum ein Tag, an dem man nicht was dazu lernt...
                  <p>
                  Danke und Grüße, Reimun

                  Comment

                  Working...
                  X