alexs писал(а):Не в винде нужен аналог. Что предложишь?
Не в винде работатет предложенный вариант в компоненте.
- Код: Выделить всё
- {$IFDEF WINDOWS}
 ...
 {$ELSE}
 S:=UTF8ToDos(ALine);
 {$ENDIF}
Добавлено спустя 2 часа 57 минут 37 секунд:
alexs писал(а):да кстати, а функцию то тестировал?
При тестах обнаружил ошибки. При печати больших текстов некоторые символы в определенных буквосочетаниях конвертировались с ошибкой. Функцию "творчески" переделал. И постановка UTF8ToWinCP() была не правильной.
- Код: Выделить всё
- function UTF8ToCP866KazKKM(const FSrcString:string):string;
 var
 FSymbol: String;
 i, L: Integer;
 P: PChar;
 FDst: PChar;
 begin
 Result:='';
 i:=1;
 while i<=Length(FSrcString) do
 begin
 P:=@FSrcString[i];
 L:=UTF8CharacterLength(P);
 FSymbol:=Copy(FSrcString, i, L);
 i:=i+l;
 if FSymbol='ә' then
 Result:=Result + #177
 else
 if FSymbol='і' then
 Result:=Result + #105
 else
 if FSymbol= 'ң' then
 Result:=Result + #241
 else
 if FSymbol= 'ғ' then
 Result:=Result + #220
 else
 if FSymbol= 'ү' then
 Result:=Result + #248
 else
 if FSymbol= 'ұ' then
 Result:=Result + #246
 else
 if FSymbol= 'қ' then
 Result:=Result + #223
 else
 if FSymbol= 'ө' then
 Result:=Result + #244
 else
 if FSymbol= 'һ' then
 Result:=Result + #254
 else
 if FSymbol= 'Ә' then
 Result:=Result + #176
 else
 if FSymbol= 'І' then
 Result:=Result + #73
 else
 if FSymbol= 'Ң' then
 Result:=Result + #240
 else
 if FSymbol= 'Ғ' then
 Result:=Result + #219
 else
 if FSymbol= 'Ү' then
 Result:=Result + #247
 else
 if FSymbol= 'Ұ' then
 Result:=Result + #245
 else
 if FSymbol= 'Қ' then
 Result:=Result + #222
 else
 if FSymbol= 'Ө' then
 Result:=Result + #243
 else
 if FSymbol= 'Һ' then
 Result:=Result + #253
 else
 begin
 FSymbol := UTF8ToWinCP(FSymbol);
 FDst := AllocMem((Length(FSymbol) + 1) * SizeOf(Char));
 if CharToOEM(PChar(FSymbol), FDst) then
 Result := Result + StrPas(FDst);
 FreeMem(FDst);
 end;
 end;
 SetCodePage(RawByteString(Result), CP_OEMCP, False);
 end;
П.С.: Сам не программист и это только хобби. По этому любую критику готов принять.




