Форум: "Основная";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Вниз
Не получается работать с UTF-8 Найти похожие ветки
← →
Ji © (2005-08-24 22:49) [0]Возникла необходимость обрабатывать файл, созданный программой написанной на 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;
← →
Турист (2005-08-24 23:21) [1]Ошибки выделены
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;
← →
Anatoly Podgoretsky © (2005-08-24 23:24) [2]Объяснение - ты портишь память, записываешь не туда куда надо.
← →
Ji © (2005-08-24 23:33) [3]Премного благодарен
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c