• Как загрузить юникод в Delphi?

    xpert13
    @xpert13
    Full Stack Developer
    Это не Юникод символ, это символ с кодом 0. Во многих языках программирования этот символ обозначает конец строки. На сколько я помню, для Delphi этот символ не помеха, но при попытке вывести содержимое TStringList в какой-то контрол (Memo например), то обрезание будет как раз на этом символе.

    Посмотрите через дебагер какое содержимое у TStringList после загрузки файла. Если там есть весь файл - тогда вам нужно просто удалить этот символ, если же нет - тогда загружать файл вам необходимо будет через TFileStream, после чего опять таки удалять этот NULL и дальше передавать куда нужно.
    Ответ написан
    Комментировать
  • Как загрузить юникод в Delphi?

    demon416nds
    @demon416nds
    Разработчик на чем попало
    предобработать строку например для исключения неюникодных символов
    зы вы бы показали эту строчку в hex редакторе
    сразу стало бы понятнее
    Ответ написан
    Комментировать
  • Delphi, как найти папку на всех дисках в системе?

    xpert13
    @xpert13
    Full Stack Developer
    procedure GetDriveLetters(AList: TStrings);
    var
      vDrivesSize : Cardinal;
      vDrives	: array[0..128] of Char;
      vDrive : PChar;
    begin
      AList.BeginUpdate;
      try
        AList.Clear;
        vDrivesSize := GetLogicalDriveStrings(SizeOf(vDrives), vDrives);
        if vDrivesSize = 0 then Exit;
    
        vDrive := vDrives;
        while vDrive^ <> #0 do
        begin
          AList.Add(StrPas(vDrive));
          Inc(vDrive, SizeOf(vDrive));
        end;
      finally
    	  AList.EndUpdate;
      end;
    end;
    
    function FindFolderOnDrives(sFolderName : String):string;
    var
      i : Integer;
      lDrivers : TStringList;
      sFolderPath : String;
    begin
      Result := '';
      lDrivers := TStringList.Create;
      try
        GetDriveLetters(lDrivers);
        for i := 0 to lDrivers.Count - 1 do
        begin
          sFolderPath := lDrivers[i] + sFolderName;
          if DirectoryExists(sFolderPath) then
          begin
            Result := sFolderPath;
            Exit;
          end;
        end;
      finally
        lDrivers.Free;
      end;
    end;


    Пример использования
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Edit1.Text := FindFolderOnDrives('ASDFG');
    end;
    Ответ написан
    1 комментарий