Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
21. Apr 2012
for Loop := 0 to EntriesRead - 1 do
if not Callback(PUserInfo1(ui1).usri1_name, EntriesRead, Data) then
break;
oder
for Loop := 0 to EntriesRead - 1 do
begin
if not Callback(PUserInfo1(ui1)^.usri1_name, EntriesRead, Data) then
break;
Inc(NativeUInt(ui1), sizeof(TUserInfo1)); // T statt P und Integer, falls NativeUInt...
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
21. Apr 2012
War noch im editieren. :oops:
Du müßtest auch noch das Inc an den Record anpassen. (die Daten/Records liegen wohl hintereinander im Speicher)
Falls eine Pointerarithmetik für den Record vorhanden ist, dann köndest du das INC weglassen und über PUserInfo1(ui1).usri1_name drauf zugreifen.
Eventuell kann man auch gleich das ui1 als PUserInfo1 deklarieren. (ui1.usri1_name)
Womit dann...
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
21. Apr 2012
Du gehst in dem Code auch jeweils einen String weiter (Inc(Integer(ui1), sizeof(Pointer));).
Der InfoLevel 0 paßt also zum Inc, weil da ja auch nur die Benutzernamen hintereinanderstehen (was Anderes ließt du in dem Beispiel nicht aus, sonst würde es da wohl auch nicht ganz stimmen).
MiKaEr geht statt Inc über ein Array, was einem Inc(Integer(...), sizeof(TUserInfo0)); entsprechen würde.
PS:...
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
20. Apr 2012
@Luckie: Ein Level-1-Info-Record, aber ebenfalls Level 0 als Abfrageparameter?
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
20. Apr 2012
Und warum wird schonwieder alles Wichtige unterschlagen?
Wie genau lautet die Fehlermeldung? (der Vorschlag mit Strg+C ist immernoch sehr zu empfehlen)
An welcher Stelle tritt sie auf? (auch wenn meine :glaskugel: schon fast eine Vermutung hat)
Wie kommst du auf die saudämliche Idee diesen Record verändern zu wollen und warum hast du genau diese neuen Felder dort so reingemacht?
Das...