Jo, sieht nach dem beliebten
Unicode-Problem aus, was man in den Richtlinien nachlesen kann, welche zum Delphi 2009 von Codegear/Embarcadero rausgegeben wurden.
Zitat:
Delphi-Quellcode:
for a:=0 to l-1 do
begin
te3:=DevLists.wdevlists[x].SerialNumber.wsernum[a];
if te3 = chr(0) then
begin
m:=0;
end;
if m = 1 then
begin
te1:=te1+te3;
end;
end;
m?
Delphi-Quellcode:
for a:=0 to l-1 do
begin
te3:=DevLists.wdevlists[x].SerialNumber.wsernum[a];
if te3 = #0 then
Break;
te1:=te1+te3;
end;
aber eigentlich wohl eher
te1:=DevLists.wdevlists[x].SerialNumber.wsernum;
oder
te1:=PAnsiChar(@DevLists.wdevlists[x].SerialNumber.wsernum);
je nachdem, wie wsernum definiert ist.
Grob drüber geschaut und ohne Kenntnis der Header, würde ich denken das wäre der eigentlich "nur" nötig Code,
zuzüglich der nötigen Anpassungen wegen des Unicodes.
Delphi-Quellcode:
if LW_CreateDeviceInfoList(adev) = 0 then
begin
Preturn:=0;
if adev > 0 then
begin
Preturn:=2;
num:=1;
if LW_GetDeviceInfoList(@DevLists, @num) = 0 then
begin
Preturn:=0;
for x:=0 to adev-1 do
begin
//te1:=PAnsiChar(@DevLists.wdevlists[x].SerialNumber.wsernum);
te1:=DevLists.wdevlists[x].SerialNumber.wsernum;
...
end;
end;
end;
end;