Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#20

AW: TDirectory.GetLogicalDrives

  Alt 17. Nov 2020, 17:09
Wenn P^ #0 wäre, wäre die Schleife bereits verlassen worden.

Es muss +1 addiert werden, um auf den Beginn des folgenden (Teil)Strings zu kommen. Am Ende des Gesamtstrings ist sowieso ein Doppelnullbyte. Grundsätzlich ist der Code schon richtig. Addiert man die +1 nicht, bricht die Schleife nach dem ersten Laufwerk ab (weil der Pointer auf dem Nullbyte nach dem ersten Laufwerk steht).

Ich hab sogar eine ähnliche Variante aus einem anderen Projekt probiert:
Delphi-Quellcode:
procedure SplitMultiSZToStringList(AStr: PChar; const sl: TStringList);
begin
    if Assigned(AStr) then begin
        sl.Clear;
        while AStr[0] <> #0 do begin
            if AStr <> 'then
                sl.Add(AStr);
            Inc(AStr, StrLen(AStr) + 1)
        end;
    end;
end;
Aber auch das ändert nichts.

Interessant auch: Nutzt man die ANSI-Funktion MSDN-Library durchsuchenGetLogicalDriveStringsA und passt die Variablentypen entsprechend an, knallt es auch nicht mehr. Verstehe das, wer will.

Grüße
Dalai
  Mit Zitat antworten Zitat