
09.06.2008, 14:24
|
Активный
|
|
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
|
|
Вообще то, не просто оказалось удалить ненужную часть строки из Unicode. Приходится преобразовывать Unicode в Ansistring.
Помогла функция взятая из DelphiWorld.
Код:
function WideStringToString(const ws: WideString; codePage: Word): AnsiString;
var
l: integer;
begin
if ws = '' then
Result := ''
else
begin
l := WideCharToMultiByte(codePage,
WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
@ws[1], -1, nil, 0, nil, nil);
SetLength(Result, l - 1);
if l > 1 then
WideCharToMultiByte(codePage,
WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
@ws[1], -1, @Result[1], l - 1, nil, nil);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
F : File;
Sz : Integer;
Str : WideString;
S : String;
begin
AssignFile(F, 'zum.reg');
Reset(F, 1);
Sz := FileSize(F);
setLength(Str, Sz+2);
BlockRead(F, Str[1], Sz);
CloseFile(F);
S := WideStringToString(Str, CP_ACP);
if Length(S) > 10 then begin
Sz := Pos('?????', S);
if Sz > 0 then
S := Copy(S, 1, Sz-1);
end;
Memo1.Lines.Add(S)
end;
Теперь преобразование нормально работает (D7).
__________________
Не забывайте делать резервные копии
|