Einzelnen Beitrag anzeigen

Willie1

Registriert seit: 28. Mai 2008
667 Beiträge
 
Delphi 10.1 Berlin Starter
 
#15

AW: TDirectory.GetLogicalDrives

  Alt 16. Nov 2020, 19:03
Hallo Freunde, (oder *innen)
wg. Augen hab' ich übersehen, dass wir schon auf Seite 2 sind.
Eure Diskussion hat nichts mit dem Fehler zu tun. Assign habe ichschon oft benutzt und das ursprüngliche Objekt mit Free frei gegeben und das läuft!
Delphi-Quellcode:
procedure MultiSzToStrings(const MultiSz: PChar;
  const Strings: Classes.TStrings);
  {Splits out individual strings from given 'MultiSz' strings buffer and adds
  each string to the given string list. A MultiSz string is a sequence of #0
  delimited strings terminated by an extra #0 character. Does nothing if string
  list or MultiSz buffer are nil.}

var
  P: PChar; // pointer to strings in buffer
begin
  // Do nothing in MultiSz is nil
  if not Assigned(MultiSz) then
    Exit;
  // Scan thru #0 delimited strings until #0#0 found
  P := MultiSz;
  while P^ <> #0 do
  begin
    // add string to list
    Strings.Add(P);
    // move pointer to start of next string if any
    Inc(P, SysUtils.StrLen(P) + 1); //hier kracht es bei Durchlauf >= 2.
  end;
end;
Die Schleife wird falsch beendet. Siehe Screenshots. Den gesamten Source hat Friedrich ja hoch geladen.
Willie.
Miniaturansicht angehängter Grafiken
screenshot-2020-11-16-18.20.40.jpg   screenshot-2020-11-16-18.21.04.jpg  
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.

Geändert von Willie1 (16. Nov 2020 um 19:08 Uhr)
  Mit Zitat antworten Zitat