Recent

Author Topic: ParadoxDataset with ISO_8859_7 enconded paradox file?  (Read 500 times)

dpap

  • Jr. Member
  • **
  • Posts: 52
ParadoxDataset with ISO_8859_7 enconded paradox file?
« on: February 24, 2025, 08:35:54 pm »
My paradox files are encoded as ISO_8859_7 (Greek). Using paradoxDataset I can open and display the contents of my paradox files but, as I understood, it not support ISO_8859_7 encoding and treats it as default (UTF8) resulting to garbages for greek characters.
in LConvEnconding file I see:
//encoding names
const
  EncodingUTF8 = 'utf8';
  EncodingAnsi = 'ansi';
  EncodingUTF8BOM = 'utf8bom'; // UTF-8 with byte order mark
  EncodingUCS2LE = 'ucs2le'; // UCS 2 byte little endian
  EncodingUCS2BE = 'ucs2be'; // UCS 2 byte big endian

  EncodingCP1250 = 'cp1250';
  EncodingCP1251 = 'cp1251';
  EncodingCP1252 = 'cp1252';
  EncodingCP1253 = 'cp1253';
  EncodingCP1254 = 'cp1254';
  EncodingCP1255 = 'cp1255';
  EncodingCP1256 = 'cp1256';
  EncodingCP1257 = 'cp1257';
  EncodingCP1258 = 'cp1258';

  EncodingCP437 = 'cp437';
  EncodingCP850 = 'cp850';
  EncodingCP852 = 'cp852';
  EncodingCP865 = 'cp865';
  EncodingCP866 = 'cp866';
  EncodingCP874 = 'cp874';

  EncodingCP932 = 'cp932';
  EncodingCP936 = 'cp936';
  EncodingCP949 = 'cp949';
  EncodingCP950 = 'cp950';

  EncodingCPMac = 'macintosh';
  EncodingCPKOI8R = 'koi8r';
  EncodingCPKOI8U = 'koi8u';
  EncodingCPKOI8RU = 'koi8ru';

  EncodingCPIso1 = 'iso88591';
  EncodingCPIso2 = 'iso88592';
  EncodingCPIso3 = 'iso88593';
  EncodingCPIso4 = 'iso88594';
  EncodingCPIso5 = 'iso88595';
  EncodingCPIso7 = 'iso88597';
  EncodingCPIso9 = 'iso88599';
  EncodingCPIso10 = 'iso885910';
  EncodingCPIso13 = 'iso885913';
  EncodingCPIso14 = 'iso885914';
  EncodingCPIso15 = 'iso885915';
  EncodingCPIso16 = 'iso885916'; 

How can I achive to read contents as ISO_8859_7 , please?

sstvmaster

  • Sr. Member
  • ****
  • Posts: 305
Re: ParadoxDataset with ISO_8859_7 enconded paradox file?
« Reply #1 on: February 25, 2025, 07:27:23 am »
Maybe
Quote
EncodingCPIso7 = 'iso88597';
is the right one?
greetings Maik

Windows 10,
- Lazarus 3.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)

paweld

  • Hero Member
  • *****
  • Posts: 1361
Re: ParadoxDataset with ISO_8859_7 enconded paradox file?
« Reply #2 on: February 25, 2025, 07:49:00 am »
After opening the DataSet, you need to assign OnGetText (for displaying text) and OnSetText (for updating content) events for all text fields that will automatically change encoding.
Code: Pascal  [Select][+][-]
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, LConvEncoding, DB;
  9.  
  10. type
  11.  
  12.   { TForm1 }
  13.  
  14.   TForm1 = class(TForm)
  15.     Button1: TButton;
  16.     MSQuery1: TMSQuery;
  17.     procedure Button1Click(Sender: TObject);
  18.   private
  19.     procedure GetText(Sender: TField; var aText: string; DisplayText: boolean);
  20.     procedure SetText(Sender: TField; const aText: string);
  21.   public
  22.  
  23.   end;
  24.  
  25. var
  26.   Form1: TForm1;
  27.  
  28. implementation
  29.  
  30. {$R *.lfm}
  31.  
  32. { TForm1 }
  33.  
  34. procedure TForm1.GetText(Sender: TField; var aText: string; DisplayText: boolean);
  35. begin
  36.   aText := ISO_8859_7ToUTF8(Sender.AsString);
  37. end;
  38.  
  39. procedure TForm1.SetText(Sender: TField; const aText: string);
  40. begin
  41.   Sender.AsString := UTF8ToISO_8859_7(aText);
  42. end;
  43.  
  44. procedure TForm1.Button1Click(Sender: TObject);
  45. var
  46.   i: integer;
  47.   MyDataSet: TDataSet;
  48. begin
  49.   MyDataSet.SQL.Text := ' select * from greek_paradox_table ';
  50.   MyDataSet.Open;
  51.   //add the following code
  52.   for i := 0 to MyDataSet.Fields.Count - 1 do
  53.   begin
  54.     if MyDataSet.Fields[i].DataType in [ftString, ftMemo] then
  55.     begin
  56.       MyDataSet.Fields[i].OnGetText := @GetText;
  57.       MyDataSet.Fields[i].OnSetText := @SetText;
  58.     end;
  59.   end;
  60. end;
  61.  
  62. end.
  63.  
« Last Edit: February 25, 2025, 07:50:56 am by paweld »
Best regards / Pozdrawiam
paweld

dpap

  • Jr. Member
  • **
  • Posts: 52
Re: ParadoxDataset with ISO_8859_7 enconded paradox file?
« Reply #3 on: February 25, 2025, 08:23:23 am »
Thanks for your replies.
I tried them but the problem persists.
Neither EncodingCPIso7 = 'iso88597' as FTargetEncoding or FInputEncoding
nor the onGetText shows Greek!

EDIT:
In the component instructions says
"The encoding of text fields used in the file is displayed in the read-only property InputEncoding. It is automatically converted to the encoding given in property TargetEncoding which defaults to "UTF8". In the case that text fields must be encoded differently specify the codepage name here, e.g. "CP1252" for Western Europe code page (use the (case-insensitive) names given in the LazUtils unit lconvencoding)."
I tried to set TargetInput to 'iso88597' or 'CP1253' but no success.
« Last Edit: February 25, 2025, 08:36:38 am by dpap »

wp

  • Hero Member
  • *****
  • Posts: 12773
Re: ParadoxDataset with ISO_8859_7 enconded paradox file?
« Reply #4 on: February 25, 2025, 10:19:29 am »
Please post a small Paradox table showing the issue.

dpap

  • Jr. Member
  • **
  • Posts: 52
Re: ParadoxDataset with ISO_8859_7 enconded paradox file?
« Reply #5 on: February 26, 2025, 10:56:55 am »
Here is a small table with data in Greek

paweld

  • Hero Member
  • *****
  • Posts: 1361
Re: ParadoxDataset with ISO_8859_7 enconded paradox file?
« Reply #6 on: February 26, 2025, 12:08:35 pm »
sample in attachment
Best regards / Pozdrawiam
paweld

dpap

  • Jr. Member
  • **
  • Posts: 52
Re: ParadoxDataset with ISO_8859_7 enconded paradox file?
« Reply #7 on: February 26, 2025, 12:25:24 pm »
Seems to be the SOLUTION! but I can't find paradoxlaz. Where can I find it?

paweld

  • Hero Member
  • *****
  • Posts: 1361
Re: ParadoxDataset with ISO_8859_7 enconded paradox file?
« Reply #8 on: February 26, 2025, 12:48:32 pm »
Download from: https://sourceforge.net/projects/tpdx/
but this component only allows you to work in read-only mode
« Last Edit: February 26, 2025, 12:50:35 pm by paweld »
Best regards / Pozdrawiam
paweld

dpap

  • Jr. Member
  • **
  • Posts: 52
[SOLVED] ParadoxDataset with ISO_8859_7 enconded paradox file?
« Reply #9 on: February 26, 2025, 01:00:31 pm »
YES!  THIS IS THE SOLUTION to my problem. I am grateful to you.

 

TinyPortal © 2005-2018