История повреждена, некоторые данные утеряны.
- cy6
- Не в сети
- Elite Member
Меньше
Больше
- Сообщений: 273
- Спасибо получено: 0
15 года 2 нед. назад - 15 года 2 нед. назад #41
от cy6
cy6 ответил в теме RE: История повреждена, некоторые данные утеряны.
Rapid D писал(а):
Я сделала алгоритм, как задумывала с самого начала, чтобы детектить Chunk по всем известным полям фиксированной длинны. Тесты показывают отличные результаты. Фактически, я добилась того, что длина поля Body теперь вычисляемая и проверяемая. Длина поля Extra-Info принята за 12, хотя и в документации нет подобных указаний, но мне другая длина этого поля в файлах (включая старый &RQ) не встречалась. Также, возможно считывание записи даже при затертом поле What или Event-Time (но не обоих сразу).
Ключевой алгоритм детекта полей Chunk прилагаю. Думаю, скоро будет новый бета-релиз.
Встречаются пять подряд. Как я уже говорила, в конце поля Body. Иногда встречается не $FF, а $FE, и тогда детектится -2 вместо -1, соответственно.И даже 4 подряд $FF встречаются часто? Вроде бы не должно
Я сделала алгоритм, как задумывала с самого начала, чтобы детектить Chunk по всем известным полям фиксированной длинны. Тесты показывают отличные результаты. Фактически, я добилась того, что длина поля Body теперь вычисляемая и проверяемая. Длина поля Extra-Info принята за 12, хотя и в документации нет подобных указаний, но мне другая длина этого поля в файлах (включая старый &RQ) не встречалась. Также, возможно считывание записи даже при затертом поле What или Event-Time (но не обоих сразу).
Ключевой алгоритм детекта полей Chunk прилагаю. Думаю, скоро будет новый бета-релиз.
Вложение ChunkDetect.zip не найдено
Последнее редактирование: 15 года 2 нед. назад пользователем cy6.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Rapid D
- Не в сети
- Administrator
Меньше
Больше
- Сообщений: 1995
- Спасибо получено: 35
15 года 2 нед. назад - 15 года 2 нед. назад #42
от Rapid D
Rapid D ответил в теме RE: История повреждена, некоторые данные утеряны.
cy6 писал(а):
Например добавил UID (если он не числовой, например в AIM, MRA, XMPP).
Вечером напишу поподробней, что как добавлял
Я в extra-info что-то добавлял. Потому лучше жёстко его не считать.... Длина поля Extra-Info принята за 12, хотя и в документации нет подобных указаний, но мне другая длина этого поля в файлах (включая старый &RQ) не встречалась...
Например добавил UID (если он не числовой, например в AIM, MRA, XMPP).
Вечером напишу поподробней, что как добавлял
Последнее редактирование: 15 года 2 нед. назад пользователем Rapid D.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Rapid D
- Не в сети
- Administrator
Меньше
Больше
- Сообщений: 1995
- Спасибо получено: 35
15 года 2 нед. назад #43
от Rapid D
Rapid D ответил в теме RE: История повреждена, некоторые данные утеряны.
cy6 писал(а):
Ну что за привычка использовать глобальные переменные?...
Ключевой алгоритм детекта полей Chunk прилагаю. Думаю, скоро будет новый бета-релиз.Вложение ChunkDetect.zip не найдено
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- cy6
- Не в сети
- Elite Member
Меньше
Больше
- Сообщений: 273
- Спасибо получено: 0
15 года 2 нед. назад - 15 года 2 нед. назад #44
от cy6
cy6 ответил в теме RE: История повреждена, некоторые данные утеряны.
Rapid D писал(а):
Это не глобальные, снова. Я же интерфейс класса выкладывала.
ChunkRead, ChunkScan1 используются для строгого чтения хистори при проверке, для ремонта будут ChunkReadRepair и ChunkScan2, соответственно.
Все они используют ChunkDetectFields. В самой функции (ChunkDetectFields) я не стала использовать специфический тип данных Delphi - set, воспользовалась более привычной установкой битов, для обозначения опознанного поля.
fChunkFixBuff считывается в ChunkRead и ChunkScan, блок из 21 байта (предполагаемые поля с What по Extra-Len). ChunkRead опознает и считывает запись, ChunkScan находит следующую запись, чтобы определить длину первой, в соответствии с рекомендованным алгоритмом.
Ну что за привычка использовать глобальные переменные?
Это не глобальные, снова. Я же интерфейс класса выкладывала.
THistFile = class (TFileIO)
private
fResReason: Integer;
fChunkFixBuff: PByte;
fFields: Word;
fIsChunkLoaded: Boolean;
fWhat: Cardinal;
fEventType: Byte;
fSenderUIN: Cardinal;
fEventTime: TDateTime;
fExtraInfo: PByte;
fExtraInfoLen: Cardinal;
fBody: AnsiString;
fBodyLen: Cardinal;
protected
function getDecriptedBody: string;
function getResReasonDesc: string;
public
constructor Create;
destructor Destroy; override;
function ChunkRead: Boolean;
function ChunkReadRepair: Boolean;
function ChunkWrite(src: THistFile): Boolean;
function ChunkScan1(var Offs: Cardinal; IsSave: Boolean): Boolean;
function ChunkDetectFields(IsSave: Boolean): Boolean;
property ErrorReason: Integer read fResReason;
property What: Cardinal read fWhat;
property EventType: Byte read fEventType;
property SenderUIN: Cardinal read fSenderUIN;
property EventTime: TDateTime read fEventTime;
property Body: string read getDecriptedBody;
end;
ChunkRead, ChunkScan1 используются для строгого чтения хистори при проверке, для ремонта будут ChunkReadRepair и ChunkScan2, соответственно.
Все они используют ChunkDetectFields. В самой функции (ChunkDetectFields) я не стала использовать специфический тип данных Delphi - set, воспользовалась более привычной установкой битов, для обозначения опознанного поля.
fChunkFixBuff считывается в ChunkRead и ChunkScan, блок из 21 байта (предполагаемые поля с What по Extra-Len). ChunkRead опознает и считывает запись, ChunkScan находит следующую запись, чтобы определить длину первой, в соответствии с рекомендованным алгоритмом.
Последнее редактирование: 15 года 2 нед. назад пользователем cy6.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- cy6
- Не в сети
- Elite Member
Меньше
Больше
- Сообщений: 273
- Спасибо получено: 0
15 года 1 нед. назад - 15 года 1 нед. назад #45
от cy6
cy6 ответил в теме RE: История повреждена, некоторые данные утеряны.
Update по программке ремонта истории.
Интерфейс улучшила и доделала. История, выгоняемая в текстовики теперь читабельна, раскодируются UTF-8, UTF-16 и UTF-16 BE.
Осталось только аварийное чтение (проверочное строгое готово), надеюсь Rapid D. еще выложит обещанные советы, и новый уже официальный бета билд будет готов.
16.12.2009:
Все по моей программе переносится в заведенную тему.
rnq.ru/component/option,com_kunena/Itemi...ew/catid,7/id,36335/
Интерфейс улучшила и доделала. История, выгоняемая в текстовики теперь читабельна, раскодируются UTF-8, UTF-16 и UTF-16 BE.
Осталось только аварийное чтение (проверочное строгое готово), надеюсь Rapid D. еще выложит обещанные советы, и новый уже официальный бета билд будет готов.
16.12.2009:
Все по моей программе переносится в заведенную тему.
rnq.ru/component/option,com_kunena/Itemi...ew/catid,7/id,36335/
Последнее редактирование: 15 года 1 нед. назад пользователем cy6.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Модераторы: bass, vazooza, Delphuk, dek, TiMeTraSheR, LaDyStRaNGe, d0CeNT, Rapid D
Время создания страницы: 0.313 секунд