Discussion:
Delphi i Mazovia
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Set
2005-05-13 08:59:39 UTC
Permalink
Czy sa jakies biblioteki do obslugi baz ze standardem polskich znakow w
mazovi?
Konkretnie chodzi o bdf z clippera.
dp
2005-05-13 10:36:57 UTC
Permalink
Post by Set
Czy sa jakies biblioteki do obslugi baz ze standardem polskich znakow w
mazovi?
Konkretnie chodzi o bdf z clippera.
Użyj komponentów Advantage+ w zdarzeniu OnGetData i OnSetData obsłuż samemu
konwersje
j_marek
2005-05-13 11:33:24 UTC
Permalink
Post by Set
Czy sa jakies biblioteki do obslugi baz ze standardem polskich znakow
w mazovi?
[...]

Witam!

{ Obsługa kownersji polskich znaków }
{ Autor: Marek Janaszewski - 2003 r. }

unit MjConvPL;

interface

type
TPLCodePage = (cpAnsi, cpLatin2, cpISO, cpMazowia);

// Uwaga: Przekodowuje tylko polskie znaki
function ConvertPL(const S: string; SourceCP, TargetCP: TPLCodePage):
string;

implementation

const
PLCharCodes: array [0..17, TPLCodePage] of Char = (
{ ANSI Latin2 ISO Mazowia }
('Ą', #164, #161, #143),
('Ć', #143, #198, #149),
('Ę', #168, #202, #144),
('Ł', #157, #163, #156),
('Ń', #227, #209, #165),
('Ó', #224, #211, #163),
('Ś', #151, #166, #152),
('Ź', #141, #172, #160),
('Ż', #189, #175, #161),
('ą', #165, #177, #134),
('ć', #134, #230, #141),
('ę', #169, #234, #145),
('ł', #136, #179, #146),
('ń', #228, #241, #164),
('ó', #162, #243, #162),
('ś', #152, #182, #158),
('ź', #171, #188, #166),
('ż', #190, #191, #167));

function ConvertPL(const S: string; SourceCP, TargetCP: TPLCodePage):
string;
var
I, J: Integer;
C: Char;
begin
Result := S;
UniqueString(Result);
for I := 1 to Length(Result) do
begin
C := Result[I];
for J := Low(PLCharCodes) to High(PLCharCodes) do
if C = PLCharCodes[J, SourceCP] then
begin
Result[I] := PLCharCodes[J, TargetCP];
Break;
end;
end;
end;

end.

W przypadku BDE i .dbf-ów trzeba posłużyć się czymś takim aby mieć dostęp do
pól bez przekodowania:

{ Wyłącza konwertowanie znaków w BDE }
procedure SetTransliterate(ADataSet: TDataSet; AValue: Boolean);
var
I: Integer;
begin
with ADataSet do
for I := 0 to FieldCount - 1 do
if Fields[I] is TStringField then
TStringField(Fields[I]).Transliterate := AValue;
end;

Wtedy można wprowadzić własne kodowanie w aplikacji bez zaburzeń ze strony
BDE.
--
Pozdrawiam,
Marek Janaszewski
[ j_marek(małpa)gazeta(kropka)pl ]
[ == USUN_TO. z adresu == ]
Kontynuuj czytanie narkive:
Loading...