Autor Téma: Chybne vyhodnoceni promenné - Inifiles  (Přečteno 1396 krát)

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 126
  • Karma: 8
    • Verze Delphi: XE2
Chybne vyhodnoceni promenné - Inifiles
« kdy: 22-11-2018, 17:14:14 »
Ahoj

Pokud zkompiluji kod pod WIN tak se vše provádí Ok , ale pokud to pustím na Android (telefon s Oreo 8.1).  Tak mi to  čte promenné obracene
viz popis v kodu .
Zkoušel jsem to Delphi Comunnity   10.2  i 10.3 - problém je stejný
Vůbec nechápu kde mám problém ?:
Může někdo pomoci ?

Kód: [Vybrat]
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls,System.IOUtils;

type
  TForm1 = class(TForm)
    BtnRead: TButton;
    BtnSave: TButton;
    procedure BtnSaveClick(Sender: TObject);
    procedure BtnReadClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses Inifiles;
{$R *.fmx}
{$R *.LgXhdpiPh.fmx ANDROID}

procedure TForm1.BtnReadClick(Sender: TObject);
var
myifile:TIniFile;
PathWork,ValueWork: string;
begin

  PathWork:='';
  ValueWork:='';
  PathWork:=System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetHomePath,'settings.ini');


  ShowMessage(PathWork);   //  tady mi to ukazuje  promennou ValueWork


  myifile:=TIniFile.Create(PathWork);
  ValueWork:=myifile.ReadString('SEKCE','PROMENNA','N/A');
  ShowMessage('Nevím proč ?!');
  ShowMessage(ValueWork); //  tady mi to ukazuje  promennou PathWork

  // Pokud kompiluji pod Windows  je vše OK

   FreeAndNil(myifile);


end;
//----------------------------------------------------------------
procedure TForm1.BtnSaveClick(Sender: TObject);
var
myifile:TIniFile;
PathWork:String;
begin
 PathWork:=System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetHomePath,'settings.ini');
  ShowMessage(PathWork);
 myifile:=TIniFile.Create(PathWork);
 myifile.WriteString('SEKCE','PROMENNA','HODNOTA - '+DateTimeToStr(now));
 myifile.UpdateFile;

 FreeAndNil(myifile);



end;

end.

Online vandrovnik

  • Guru
  • *****
  • Příspěvků: 673
  • Karma: 41
    • Verze Delphi: 10.3
Re:Chybne vyhodnoceni promenné - Inifiles
« Odpověď #1 kdy: 22-11-2018, 18:14:48 »
Není to jen tím, že ShowMessage na Androidu nečeká na "odkliknutí" a prostě to proběhne celé najednou?

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 126
  • Karma: 8
    • Verze Delphi: XE2
Re:Chybne vyhodnoceni promenné - Inifiles
« Odpověď #2 kdy: 22-11-2018, 18:52:03 »
Není to jen tím, že ShowMessage na Androidu nečeká na "odkliknutí" a prostě to proběhne celé najednou?

Myslím že ne
  ShowMessage('Nevím proč ?!');  se mi vždy ukáže jako druha (prostřední)
Viz upraveny kod
Pod windows   spravne poradi showmessage
1. hlaska  Path
2. hlaska Info
3. hlaska Value


Pod Android
3. hlaska Value
2. hlaska Info
1. hlaska  Path


Tudíž problém není ve vyhodnocování promenných ale čtení hlášek od "konce" kodu na začátek - jsem z z toho Matěj

Kód: [Vybrat]
rocedure TForm1.BtnReadClick(Sender: TObject);
var
myifile:TIniFile;
PathWork: string;
ValueWork: string;
begin

  PathWork:='';
  ValueWork:='';
  PathWork:=System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetHomePath,'settings.ini');

  ShowMessage('1 hlaska Path '+ PathWork);   //  tady mi to ukazuje  promennou ValueWork


  myifile:=TIniFile.Create(PathWork);
  ValueWork:=myifile.ReadString('SEKCE','PROMENNA','N/A');
  ShowMessage('2 Hlaska Nevím proč to dělá ?!  2018');
  ShowMessage('3 hlaska Value - ' + ValueWork); //  tady mi to ukazuje  promennou PathWork

  // Pokud kompiluji pod Windows  je vše OK

   FreeAndNil(myifile);


end;
//----------------------------------------------------------------
« Poslední změna: 22-11-2018, 18:59:36 od Jirka »

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 126
  • Karma: 8
    • Verze Delphi: XE2
Re:Chybne vyhodnoceni promenné - Inifiles
« Odpověď #3 kdy: 22-11-2018, 19:09:33 »
Tak ještě upřesnuji
Nový jednoduchy kod   

Kód: [Vybrat]
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('1. Hlaska');
ShowMessage('2. Hlaska');
ShowMessage('3. Hlaska');
ShowMessage('4. Hlaska');
ShowMessage('5. Hlaska');
end;


Pod windows správne pořadí 1,2,3,4,5
Pod Android 5,4,3,2,1
 :D

Online vandrovnik

  • Guru
  • *****
  • Příspěvků: 673
  • Karma: 41
    • Verze Delphi: 10.3

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 126
  • Karma: 8
    • Verze Delphi: XE2
Re:Chybne vyhodnoceni promenné - Inifiles
« Odpověď #5 kdy: 22-11-2018, 22:03:14 »