Einzelnen Beitrag anzeigen

OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#18

Re: Probleme mit NetShareEnum

  Alt 25. Sep 2004, 20:59
Hmm... das ist lustig, ich habe natürlich nicht bei dem Autor geguckt, weil ich davon ausging, dass die Datei bei den Jedi die neueste ist. Wie du korrekt bemerkst, ist sie das nicht, denn sie ist vom 25. November 2002.

Aber mit der alten Version funktioniert das ganze 1a. Vielleicht ist da was verschlimmbessert worden?

Ne, ich hab' mir die von dir genannte Version gezogen und die Deklaration von NetShareEnum ist auf den ersten Blick identisch mit der in meiner alten Version, also anders als die, die du am Thread-Anfang genannt hast. Ich habe also die neue Version in mein Lib-Verzeichnis extrahiert und - ÜBERRASCHUNG - es funktioniert immer noch. Unter Delphi 7 Personal.

Folgender Code funktioniert mit der von dir genannten Version der Header unter Delphi 7 Personal:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, JwaLM, JwaLmShare;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
  TShareInfo502Array = Array of SHARE_INFO_502;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var shareBuffer: TShareInfo502Array; dwRead, dwEntries: Cardinal; i: Integer;
begin
NetShareEnum(nil, 502, PByte(shareBuffer), MAX_PREFERRED_LENGTH, @dwRead, @dwEntries, nil);
for i := 0 to dwRead - 1 do begin
  ShowMessage(WideCharToString(shareBuffer[i].shi502_netname));
end;
end;

end.
Mir ist dabei noch eine Kleinigkeit aufgefallen, die dich eventuell verwirrt: Bei den Freigaben sind auch immer alle Laufwerke mit einem Dollarzeichen dabei (also C$, D$, E$ usw.), zusätzlich zu den normalen Freigabe-Ordnern. Andererseits hast du nicht von einem Buchstaben plus Dollarzeichen geschrieben...

Fakt ist jedenfalls, der von mir gepostete Code funktioniert, und wenn er bei dir nicht funktioniert, dann muss wohl irgendwas an deinem Delphi korrupt sein...
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat