Сорри. Код немного неправильный был, уже поправил.
Цитата:
Сообщение от DA54
И нормально ли это будет работать если файл не кратен 50кб?
|
Файл может быть любого размера (только его размер должен быть кратен 4, т.к. ты используешь Longword), здесь
Код:
if fiPos + BufferSize < fiSize then
BytesToRead := BufferSize
else
BytesToRead := fiSize - fiPos;
специально вычисляется сколько байт осталось прочитать в файле. Также можешь поэкспериментировать с размером буфера, посмотреть в каком случае быстрее всего будет шифроваться файл (размер буфера тож должен быть кратен 4).
Цитата:
Сообщение от DA54
Никогда не вникал в типы начинающиеся с Р,типа Pchar.Это как указатели в С++?
|
Да, это они самые.
Ну в принципе все просто. Сначала создаем сам буфер
Код:
GetMem(Buffer, BufferSize);
Потом в цикле сначала считаем сколько байт из файла надо прочесть. Собсно считываем данные в буфер
Код:
BlockRead(fi, Buffer^, BytesToRead);
if IOResult <> 0 then
Break;
Потом шифруем прочитанные данные
Код:
for i := 0 to (BytesToRead div 4) - 1 do begin
l := PLongword(Longword(Buffer) + i * 4);
l^ := crypt(l^, PASS);
end;
И записываем их в фыходной файл
Код:
BlockWrite(fo, Buffer^, BytesToRead);
if IOResult <> 0 then
Break;
Освобождаем ресурсы.