Конференция "FreePascal" » Работа с файлами без SysUtils и Classes (linux)? [linux]
 
  • ДимкаНа (12.04.12 19:13) [0]
    Собственно использую эти модули только для того чтобы прочитать или записать файл, и имею +100% к весу исполняемого файла.

    Подскажите как переписать вот эту функцию:

    var
     FS: TFileStream;
    begin
     FS := TFileStream.Create(FileName, fmOpenRead);
     try
       SetLength(Contents, FS.Size);
       FS.ReadBuffer(Contents[1], Length(Contents));
     finally
       FS.Free;
     end;
    end;


    Достаточно будет направления или примера. Эту еще можно переписать с использованием Assign Reset ReadFile.

    А вот эту (чтение всех данных входного потока):

    const
     BlockSize = 65535;
    var
     F: THandleStream;
     ReadLength: Integer;
     Buffer: array[0..BlockSize-1] of AnsiChar;
    begin
     Contents := '';
     F := THandleStream.Create(0);
     try
       repeat
         ReadLength := F.Read(Buffer, BlockSize);
         if ReadLength > 0 then
           Contents := Contents + Copy(Buffer, 1, ReadLength)
       until ReadLength = 0;
     finally
       F.Free;
     end;
    end;

  • Cobalt © (13.04.12 10:38) [1]
    BOOL ReadFile(
     HANDLE hFile,
     LPVOID lpBuffer,
     DWORD nNumberOfBytesToRead,
     LPDWORD lpNumberOfBytesRead,
     LPOVERLAPPED lpOverlapped
    );
  • Cobalt © (13.04.12 10:40) [2]
    а вообще, если тебе оттуда надо всего чуть-чуть, попробуй сделать копию SysUtils и Classes, убрав из них initialization/finalization - там-то и тянется всякое дополнительное, что не всегда и не всем нужно.
  • Dimka Maslov © (30.05.12 23:21) [3]
    +100 к весу исполняемого файла — это обработка исключений в том числе. Без неё, случись что, программа начнёт падать с руганью от этой вашей венды.
 
Конференция "FreePascal" » Работа с файлами без SysUtils и Classes (linux)? [linux]
Есть новые Нет новых   [118682   +10][b:0][p:0.001]