Einzelnen Beitrag anzeigen

Benutzerbild von RWarnecke
RWarnecke

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

Re: Programm um Computernamen aus Netzwerk auszulesen

  Alt 25. Sep 2008, 19:44
Ändere mal diesen Teil so ab :
Delphi-Quellcode:
procedure ScanNetworkResources(ResourceType, DisplayType: DWord; List: TStrings);

  procedure ScanLevel(NetResource: PNetResource);
  var
    Entries: DWord;
    NetResourceList: PNetResourceArray;
    i: Integer;
  begin
    Application.ProcessMessage //<-- Änderung
    if CreateNetResourceList(ResourceType, NetResource, Entries, NetResourceList) then try
      for i := 0 to Integer(Entries) - 1 do
      begin
        if (DisplayType = RESOURCEDISPLAYTYPE_GENERIC) or
          (NetResourceList[i].dwDisplayType = DisplayType) then begin
          List.AddObject(NetResourceList[i].lpRemoteName,
                        Pointer(NetResourceList[i].dwDisplayType));
        end;
        if (NetResourceList[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then
          ScanLevel(@NetResourceList[i]);
      end;
    finally
      FreeMem(NetResourceList);
    end;
  end;

begin
  ScanLevel(Nil);
end;
Dann wirst Du sehen, dass sich doch etwas tut. Nur wenn ich das Programm starte, hat die Variable Entries schon einen Wert von 1942475233 (Breaktpoint bei if CreateNetResourceList... in der Procedure Scanlevel). Dann Ändert er den Wert auf 4. Trotzdem wird die Procedure mehr als 4 Mal durchgegangen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat