DBf - nieobsługiwanie polskich znaków w ścieżce

0

Witam!
Napisałem książkę adresową, która działa dzięki DBf, DataSource, DBGrid. Pisałem ją w Lazarusie pod Linuxem, pod Mint.
Kompilacja pod Windowsem po skopiowaniu przeszła za pierwszym razem pomyślnie, jednak powstał nowy problem, który nie wiem jak rozwiązać. Przy próbie zapisania bazy do katalogu z projektem, który znajduje się w moich dokumentach, powstaje komunikat:

8f0e3cf87e.png

Wydaje mi się, że to jest problem z polskimi znakami w ścieżce, bo nazwa użytkownika to moje imie, a moje imie zawiera 'ł'. Gdy na Windowsie zapisuje bezpośrednio na partycji D:\ to zapisuje się bez problemu. Ze względu, że na Linuxie nie używam polskich znaków w ścieżce to nie zauważyłem tego problemu wcześniej.

Poniżej wklejam kod tworzenia bazy:

type

  { TForm1 }

  TForm1 = class(TForm)
    NowaBaza: TMenuItem;
    OtworzBaza: TOpenDialog;
    DataSource1: TDataSource;
    Baza: TDbf;
    DBGrid1: TDBGrid;
procedure TForm1.NowaBazaClick(Sender: TObject);
begin
  With ZapiszBaza do
    If Execute then
      CreateTable(FileName);
end;   
procedure TForm1.CreateTable(AFileName : String);
begin
  With Baza do
    begin
    Close;
    with FieldDefs do
      begin
      Clear;
      TableLevel:=7;  //Żeby działa automatyczna inkrementacja ID
      Add('ID', ftAutoInc, 0);
      Add('Imie',ftString,30);
      Add('Nazwisko',ftString,40);
      Add('Telefon',ftString,20);
      Add('TelefonKom',ftString,20);
      Add('eMail',ftString,60);
      Add('Kraj',ftString,30);
      Add('Miasto',ftString,30);
      Add('Kod',ftString,10);
      Add('Ulica',ftString,30);
      Add('Blok',ftString,10);
      Add('Lokal',ftString,10);
      Add('Inne',ftString,200);
      end;
    TableName:=AFileName;
    CreateTable;
    Exclusive := true;
    Open;
    AddIndex('ID', 'ID', [ixPrimary, ixUnique]);
    end;
end; 

Co dziwne to znaki polskie w bazie zapisują się bez problemu, a tylko takie problemy znalazłem w google.
Ma ktoś jakieś pomysły?

3

Musisz zmienić kodowanie znaków w ścieżce:

procedure TForm1.NowaBazaClick(Sender: TObject);
begin
  With ZapiszBaza do
    If Execute then
      CreateTable(UTF8ToAnsi(FileName));
end;   
0

Działa! Dziękuję!
To samo zastosowałem w OpenTable. Problem rozwiązany! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1