В чем проблема - сейчас пользователь пишет, что у него программа в хаотичном порядке портит текст комментариев, которые были к напоминаниям. Может неделю все быть хорошо, а может за день раз пять все превратится в иероглифы. Когда писал программу, то для хранения данных использовал INI файлы. А поскольку непонятно было, что в комментарии может оказаться, я перед записью его преобразовывал в строку цифр. Все это было на Turbo Delphi. Не так давно на ХабраХабр была статья, про ошибку записи байта в жестких дисках одного производителя, когда тот работал с одновременно включенным другим устройством на своей шине. На 99% уверен, что косяк мой. Но вот прочтенная история на хабре, очень удачно укладывается в мою проблему, потому что если испортить один символ, то мои функции работать не будут. Хотя кто знает.
Есть какие нибудь библиотеки чтобы сравнивать файл загруженный в память и файл на диске?
- Код: Выделить всё
Function CommentEnc(Comment:string):string;
var
s,s2:string;
i,c,k:integer;
begin
c:=length(Comment);
s:='';
for i:=c downto 1 do begin
s2:=Comment[i];
k:=ord(s2[1]);
if k<10 then
s:=s+'00'+inttostr(k)
else if (k<100)and(k>9) then
s:=s+'0'+inttostr(k)
else
s:=s+inttostr(k);
end;
result:=s;
end;
Function CommentDec(Comment:string):string;
var
s,s2:string;
i,c,k:integer;
begin
s:='';
c:=length(Comment);
i:=c-2;
while i>0 do begin
s2:=copy(Comment,i,3);
k:=strtoint(s2);
s:=s+char(k);
i:=i-3;
end;
result:=s;
end;