Конференция "FreePascal" » прочитать текстовый файл [Win32]
 
  • аматор © (12.05.06 01:09) [0]
    Привет...
    Что в коде не так: грузится только часть файла?
    var FilL : AnsiString(или String разницы нет юмор один (результат)); FF :TextFile;
    begin
     AssignFile(FF, "указываю файл");
     Reset(FF);
     Read(FF, FilL);
     CloseFile(FF);
     ShowMessage(FilL); //вот тут должно быть много текста, а его две строки...

    Ну я понял в 255 загвоздка при String, но в AnsiString? Может в лазаре файл по другому читать надо?
  • Иван Шихалев © (12.05.06 08:02) [1]
    Странно, что две. Должно быть вообще до первого пробела... Читать надо в цикле и ReadLn.
  • аматор © (12.05.06 14:53) [2]
    Не спорю, странно... Но таков юмор. Две строки это пример (реально 255 символов не больше). В цикле? А таким макаром как у меня можно? Может переменную не правильно выбрал? Когда делал перекодировку текста пишлось все String заменить на AnsiString и получилось, но почему с файлом такие приколы. И даже если читать в цикле, строка может быть больше 255, - это не вариант.
    Да, придется рыть дальше, может чет и вырою.
    Может на строку память нужно выделить.
  • Иван Шихалев © (12.05.06 16:23) [3]

    > И даже если читать в цикле, строка может быть больше 255,
    >  - это не вариант.

    ReadLn вместо Read таки должен помочь, я думаю. А вообще, не проще ли считать файл сразу скопом в буфер?
  • аматор © (12.05.06 16:53) [4]
    Мечты о ReadLn окончились фиаско... Наверное руки у меня кривые, или поспать надо. Но код  то детский. Абидно... О буфере, если я правильно понял о каком,  если пользователь чет бросил в буфер а я напакостил (буфер своей чепухой загружу), меня как посылать будут :).
    Буду искать дальше возможные варианты.
  • Иван Шихалев © (12.05.06 17:47) [5]
    Не в буфер обмена, а просто в выделенную область памяти. См. getMem и BlockRead
  • cyborg © (13.05.06 13:04) [6]
    Function GetFile(const FileName : AnsiString) : AnsiString;
    Var
     F : File;
     FSize : Longint;
    begin
     Result:='';
     
     if not FileExists(FileName) then Exit;

     FileMode:=0;

     AssignFile ( F, FileName);
     Reset(F, 1);
     FSize:=FileSize(F);
     SetLength(Result,FSize);
     BlockRead(F, Result[1],FSize);
     CloseFile(F);

     FileMode:=2;
    end;

  • аматор © (13.05.06 22:09) [7]
    Пардон за задерку, отсыпался. Попробывал загрузить в TStringList, стработало. За функцию спасибо, попробую. Сейчас над другим юмором страдаю. Вероятно эта проблемка из-за моих "кривых ручек".
    А среда, нормальная. Тока Ф9 работает через раз :).
    Интересно: вот это "Может на строку память нужно выделить." на это " а просто в выделенную область памяти" похоже по смыслу или нет? Если да, то судя по ответу я исключил свой вариант и подумал о буфере обмена. Если нет, ссори, туп я однако.
 
Конференция "FreePascal" » прочитать текстовый файл [Win32]
Есть новые Нет новых   [119079   +48][b:0][p:0.001]