Bonjour,
Deux jours que j'ai envie de tout balancer quand enfin je vois le bout du tunnel !
J'avais une appli test qui fonctionnait parfaitement avec Rio interrogeant une base de données Firebird distante via mon mobile.
Recompilé et déployé avec Alexandria rien !
le problème
CreateSymLink ne fonctionne pas sous Android pourtant dans le programme Rio j'avais écrit la même chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 procedure TDatas.ConnexionBeforeConnect(Sender: TObject); begin {$IFDEF ANDROID} // todo : vérifier que le mobile est bien sur un réseau local et/ou connecté internet // à l'occasion récupérer l'adresse IP var firebirdPath: String := Tpath.Combine(Tpath.GetHomePath, 'firebird'); var firebirdLib: String := Tpath.Combine(firebirdPath, 'lib'); // CreateSymlinkIfNecessary(Tpath.Combine(Tpath.GetHomePath, 'libfbclient.so.2'), // Tpath.Combine(firebirdLib, 'libfbclient.so.3.0.7')); Connexion.LibraryLocation := Tpath.Combine(firebirdLib, 'libfbclient.so.2'); {$ENDIF} end; procedure TDatas.CreateSymlinkIfNecessary(const SymLink, Target: String); var LinkCreated : Boolean; begin if not FileExists(SymLink) then LinkCreated:=TFile.CreateSymLink(SymLink, Target); if not LinkCreated then raise Exception.Create(Format(StrCouldNotCreateSym,[Symlink,Target])); end;
Donc ma question : c'est moi ou un upgrade de version à oublié cette partie ?
Avant d'en arriver à cette conclusion j'ai aussi testé FileGetSymLink avec le même insuccès
voir dans le mémo le résultat ! Encore une fois c'est moi ou je me suis trompé dans ma syntaxe ou ...?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 procedure TForm3.btntestZEOSClick(Sender: TObject); var r,l,lnk : string; linkcreated : boolean; begin memo1.Lines.Add('ZEOS'); r:=tpath.combine(Tpath.Gethomepath,'firebird'); r:=Tpath.Combine(r,'lib'); l:=tpath.combine(r,'libfbclient.so.3.0.7'); if FileExists(l) then memo1.Lines.Add(l+' existe'); l:=tpath.combine(r,'libfbclient.so.2'); if FileExists(l) then begin memo1.Lines.Add(l+' existe'); zconnection1.LibraryLocation:=l; if FileGetSymlinkTarget(l,lnk) then memo1.Lines.Add('lien sur '+lnk) else memo1.Lines.Add('Filegetsymlink fonctionne pas'); end; lnk:=tpath.combine(Tpath.GetHomePath,'libfbclient.so.2'); LinkCreated:=TFile.CreateSymLink(l, tpath.combine(r,'libfbclient.so.3.0.7')); if linkCreated then begin memo1.Lines.Add(lnk+' créé'); if FileExists(lnk) then begin memo1.Lines.Add('lien trouvé'); zconnection1.LibraryLocation:=lnk; end else memo1.Lines.Add('lien non trouvé !'); end else memo1.Lines.Add('lien non créé ! là, ça coince'); zconnection1.Connect; zquery1.Open; end;
Si, comme vous le constatez, la connection s'est faite c'est parce que j'ai déployé le lien 'libfbclient.so.2'
Je vais désormais pouvoir tenter de faire un programme avec firebird embarqué (oui c'est et un peu juste pour relever le challenge)
Partager