![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не получается работать с UTF-8 [D6, WinXP]
Ji © (2005-08-24 22:49:00)Возникла необходимость обрабатывать файл, созданный программой написанной на Java, в котором чередуются строки в формате UTF-8 и числа Int. Начал писать код, но все время получал ошибку при завершении программы.
В итоге пришел к следующей ситуации.
Вот такой код:
procedure TForm1.Button1Click(Sender: TObject);
var
UTFStr, UTFStr2: UTF8String;
f: file;
Str,Str2: String;
err: Integer;
begin
Str := 'Мама мыла раму';
UTFStr := UTF8Encode(Str);
AssignFile(f,'123');
ReWrite(f,1);
BlockWrite(f,UTFStr,Length(UTFStr),err);
CloseFile(f);
Reset(f,1);
BlockRead(f,UTFStr2,Length(UTFStr),err);
CloseFile(f);
Str2 := UTF8Decode(UTFStr2);
Memo1.Text := Str2;
end;
Если выполняю по F9, то: "privileged instruction at 0x008d3611. Process Stopped."
Пошаговое выполнение: та же ошибка, на строке "end;"
Если запускаю скомпилированный exe: Завершается без сообщений.
Все строки выполняются корректно и в конце Str2 = Str;
Ji (2005-08-24 23:33:00) [1]Премного благодарен
Anatoly Podgoretsky (2005-08-24 23:24:00) [2]Объяснение - ты портишь память, записываешь не туда куда надо.
Турист (2005-08-24 23:21:00) [3]Ошибки выделены
procedure TForm1.Button1Click(Sender: TObject);
var
UTFStr, UTFStr2: UTF8String;
f: file;
Str,Str2: String;
err: Integer;
begin
Str := 'Мама мыла раму';
UTFStr := UTF8Encode(Str);
AssignFile(f,'123');
ReWrite(f,1);
BlockWrite(f, UTFStr[1], Length(UTFStr),err);
CloseFile(f);
Reset(f,1);
SetLength(UTFStr2, Length(UTFStr));
BlockRead(f, UTFStr2[1],Length(UTFStr),err);
CloseFile(f);
Str2 := UTF8Decode(UTFStr2);
Memo1.Text := Str2;
end;