Современные решения

для защиты Windows приложений

и восстановления исходного кода

Обсуждение программирования на Delphi в конференции ru.delphi


CRC32 файла

From: "aleXander Olegovich Fedorov" <xof [@] email.su>


Hi,

Hужно как можно быстрее вычислять контрольную сумму файла,
например CRC32. Дело в том, что файл может быть несколько
гигабайт, поэтому в память его загружать целиком нельзя.
Сейчас я использую для этого TFileStream, читаю кусками по 1 мб.
Выходит не слишком быстро, imho, может еще быстрее можно?
Да и у TFileStream недостаток серьёзный: он не видит файлы
с unicode именами (т.е. которые в текущую Ansi раскладку
клавиатуры не вписываются, например некоторые немецкие,
французские, и конечно китайские).

Ищу альтернативный, быстрый метод подсчета контрольной суммы
у файлов.


xof




* Origin: Demos online service (2:5020/400)

Unicode имена файлов и TFileStream...

From: "aleXander Olegovich Fedorov" <xof [@] email.su>


Hi,


Столкнулся с проблемой: TFileStream не принимает имена файлов
в Unicode (widestring). Если файл содержит какие-то умляуты (не
английские и не кириллические символы, которых нет в текущей
кодировке Ansi), например французские, то ругается что не может
найти такого файла.

Есть ли объект TFileStream, который работает с unicode именами?


xof

* Origin: Demos online service (2:5020/400)

Юникод в filename и ФайлСтреам

From: "aleXander Olegovich Fedorov" <xof [@] email.su>


Hi,


Столкнулся с проблемой: TFileStream не принимает имена файлов
в Unicode (widestring). Если файл содержит какие-то умляуты (не
английские и не кириллические символы, которых нет в текущей
кодировке Ansi), например французские, то ругается что не может
найти такого файла.

Есть ли объект TFileStream, который работает с unicode именами?


xof

* Origin: Demos online service (2:5020/400)

Re: Юникод в filename и ФайлСтреам

From: "Slava Antonov" <deadbeef [@] so.yandex.ru>


Hello aleXander Olegovich Fedorov, you wrote:

> Столкнулся с проблемой: TFileStream не принимает имена файлов

> в Unicode (widestring). Если файл содержит какие-то умляуты (не

> английские и не кириллические символы, которых нет в текущей

> кодировке Ansi), например французские, то ругается что не может

> найти такого файла.

>

> Есть ли объект TFileStream, который работает с unicode именами?


См. библиотеку классов TNT. tnt.ccci.org/delphi_unicode_controls/

--
Всего хорошего, Слава.
deadbeef.narod.ru
ICQ: 197577902
* Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003 [@] fidonet)






Re: CRC32 файла

From: "Slava Antonov" <deadbeef [@] so.yandex.ru>


Hello aleXander Olegovich Fedorov, you wrote:

> Hужно как можно быстрее вычислять контрольную сумму файла,

> например CRC32. Дело в том, что файл может быть несколько

> гигабайт, поэтому в память его загружать целиком нельзя.

> Сейчас я использую для этого TFileStream, читаю кусками по 1 мб.


1) Если работать на чистом WinAPI, то системе можно сказать, что файл планируется читать последовательно

2) Подбирая оптимальный размер буфера можно увеличить скорость чтения. У меня оптимальные результаты были при размере буфера 32-64 килобайта. Короче, поэксперементируй.

3) Попробовать оптимизировать алгоритм расчета контрольной суммы.

--
Всего хорошего, Слава.
deadbeef.narod.ru
ICQ: 197577902
* Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003 [@] fidonet)






D6: TRxRichEdit

#/-----/# *Пpивет* All!
_*-----*_


1) Можно ли запpетить изменения pазмеpа каpтинки после вставке. RO не
катит.
2) Как найти позицию начало стоки. Пpобовал так, не pаботает.

s_start := 0;
for i := 0 to numstr - 1 do
s_start := s_start + length(lines[i]) + 2;
selstart := s_start;


_*----=========*_ Hу давай, Hу пока... /All!/ _*=========----*_
* Origin: Я не злопамятный - я пpосто злой и память хоpошая. (2:5012/2.214)

CRC32 файла

Привет, aleXander!



aF> Hyжно как можно быстpее вычислять контpольнyю сyммy файла,

aF> напpимеp CRC32. Дело в том, что файл может быть несколько

aF> гигабайт, поэтомy в память его загpyжать целиком нельзя.

aF> Сейчас я использyю для этого TFileStream, читаю кyсками по 1 мб.


RTFM Memory-mapped files.

aF> Выходит не слишком быстpо, imho, может еще быстpее можно?


Hемного быстрее.

aF> Да и y TFileStream недостаток сеpьёзный: он не видит файлы

aF> с unicode именами (т.е. котоpые в текyщyю Ansi pаскладкy

aF> клавиатypы не вписываются, напpимеp некотоpые немецкие,

aF> фpанцyзские, и конечно китайские).


THandleStream тебе в помощь. Handle откроешь сам через CreateFileW

WBR, Eugene mailto: www.tld.by [@] gmail*com

* Origin: Говорящая флора - это неправильно в принципе! (2:450/118.24)

Cache BLOBs

Привет All !

Имеется TQuery. Он возвращает набор из 80 записей, в котором одно из полей картинка. Затем устанавливается его свойство filter='[field]='XXX''. При прохождении по всем записям методами FindFirst,FindNext картинка считывается в поток для дальнейшей работы. При считывании в поток 1-й записи Stream:= TBlobStream.Create(query.field_1,bmRead) вываливается ошибка "Invalid BLOB handle in record buffer". Остальные записи считываются нормально.
Если сделать у DataBase.Params[BLOBS TO CACHE] = 128, т.е. больше 80 записей
тогда все ок.
Что мне сделать, чтобы не зависеть от этого параметра. Записей Query может вернуть и гораздо больше.

Hу все курим... Igor

* Origin: Pascal-Men still alive ! (2:451/16.4)

Re: CRC32 файла

ПРИВЕТ, _aleXander_!!!
=====================

06 Окт 05 03:26, aleXander Olegovich Fedorov -> All:



aOF> Hужно как можно быстрее вычислять контрольную сумму файла,

aOF> например CRC32.


С этим не подскажу, т.к. никогда не пробовал

aOF> Дело в том, что файл может быть несколько

aOF> гигабайт, поэтому в память его загружать целиком нельзя.


Попробуй отобразить файл в память, это на вродя файла подкачки будет.
Может побыстрее работать будет.

aOF> Сейчас я использую для этого TFileStream, читаю кусками по 1 мб.

aOF> Выходит не слишком быстро, imho, может еще быстрее можно?


Как то пытался открывать RTF c картинками с помощью TFileStream, очень медленно. Тогда стал копировать из TFileStream в TMemoStream и потом только открывать, побыстрее стало.


Удачи! Mail_to: FIDO: 2:5009/21.13 E-Mail: oli266 [@] mail.tambov.ru ICQ: 268409918
* Origin: Капля никотина убивает лошадь, а хомячка разрывает на (2:5009/21.13)

Cache BLOBs

Приветствую, All!

Однажды, 06.10.2005 14:20:26, Igor писал к All
по поводу "Cache BLOBs".

С этим попрошу в RU.DELPHI.DB.

-- С уважением, Andrew O. Shadoura

AKAs: 2:450/143.25, 2:450/202.25

* Origin: Formatting C: ... (2:450/143.25)