OVH Cloud OVH Cloud

fileBox

27 réponses
Avatar
3dsman
salut je suis entrain d'essayer de faire une filebox (pour choisir un
fichier) qui doit etre multiOS (au moins win macOS et linux)

Et je ne sais pas du tout comment faire pour naviguer dans les
arborescences des différents systemes.

Qu'est ce qu'il y a comme specificité a chacun?
Est ce que les fonctions findfirst et findnext fonctionnent pour tous
ces systemes?
si non est ce qu'il existe des fonction qui marchent pour tous?

Enfin si vous avez des infos, tutoriels, ou mieux si quelqu'un a déja
fait ca et aurais un code a me montrer je suis preneur :-)

Merci d'avance

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

7 réponses

1 2 3
Avatar
James Kanze
3dsman writes:

|> > 3dsman writes:

|> >>> heu g une question subsidiaire:

|> >>> Tous les linux utilisent les memes fonctions pour parcourir
|> >>> l'arboréscence?

|> >>> et heu c quoi ces fonctions?

|> > Autant que je sache, Linux essaie d'être Posix conforme ici. Selon
|> > Posix, les fonctions s'appellent opendir, readdir, rewinddir et
|> > closedir. Voir à http://www.unix.org/single_unix_specification/,
|> > ou démander dans un groupe Unix pour plus de détails.

|> > Il y a aussi une fonction ftw() (file tree walk), qui pourrait
|> > être utile dans certains cas.

|> et pour macOSX ? c pareil non ?

Pour macOSX, je n'ai aucune idée. Je sais que c'est un « Unix », mais je
ne sais pas si c'est Open System ou non.

|> Donc j'aurais que deux versions a faire?

À ta place, je chercherais aussi chez Windows. Comme j'ai dit, ça ne
m'étonnerait pas qu'il ait aussi des fonctions équivalentes dans une
bibliothèque quelque part.

--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Avatar
3dsman
Donc j'aurais que deux versions a faire?



À ta place, je chercherais aussi chez Windows. Comme j'ai dit, ça ne
m'étonnerait pas qu'il ait aussi des fonctions équivalentes dans une
bibliothèque quelque part.


tu veux dire un truc plus proche de readdir, opendir et closedir que
findfirst et findnext?

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com



Avatar
kanze
3dsman wrote in message
news:...

Donc j'aurais que deux versions a faire?



À ta place, je chercherais aussi chez Windows. Comme j'ai dit, ça ne
m'étonnerait pas qu'il ait aussi des fonctions équivalentes dans une
bibliothèque quelque part.


tu veux dire un truc plus proche de readdir, opendir et closedir que
findfirst et findnext?


C'est ce que je m'attendais. Mais je crois que je me suis trompé. En
fait, Windows supporte bien opendir, readdir et closedir, mais seulement
à travers l'Interix sous-système, et non natif.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34




Avatar
3dsman
vient de nous annoncer :
3dsman wrote in message
news:...

Donc j'aurais que deux versions a faire?



À ta place, je chercherais aussi chez Windows. Comme j'ai dit, ça ne
m'étonnerait pas qu'il ait aussi des fonctions équivalentes dans une
bibliothèque quelque part.


tu veux dire un truc plus proche de readdir, opendir et closedir que
findfirst et findnext?


C'est ce que je m'attendais. Mais je crois que je me suis trompé. En
fait, Windows supporte bien opendir, readdir et closedir, mais seulement
à travers l'Interix sous-système, et non natif.


ok donc a priori c'est le plus simple de faire des fonction avec des
#ifdef et readdir, opendir, closedir / findfirst, findnext?!
Bon ben je crois que je vais faire ca. en plus c'est pas mal documenté
ces apels


Par contre si quelqu'un peut confirmer ou infirmer que macOSX est
compatible posx ca m'arrangerais :-)

Merci encore a tout le monde

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com





Avatar
James Kanze
3dsman writes:

|> vient de nous annoncer :

|> ok donc a priori c'est le plus simple de faire des fonction avec des
|> #ifdef et readdir, opendir, closedir / findfirst, findnext?!

Seulement si le but est l'obfuscation. Tu fais un fichier .hh avec la
définition de la classe, en te servant de l'idiome du pare-feu de
compilation, pour que rien de l'implémentation n'y apparaît, et tu fais
deux fichiers .cc d'implémentation, un pour Windows, et un pour les
Unix. Tu compiles le fichier .cc qui convient au système.

--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Avatar
3dsman
3dsman writes:

vient de nous annoncer :

ok donc a priori c'est le plus simple de faire des fonction avec des
#ifdef et readdir, opendir, closedir / findfirst, findnext?!



Seulement si le but est l'obfuscation.


heu ca veux dire quoi? :-)

Tu fais un fichier .hh avec la
définition de la classe, en te servant de l'idiome du pare-feu de
compilation, pour que rien de l'implémentation n'y apparaît


heu et ca?
Un pare feu de compilation ca veux dire quoi?
que je fait une classe avec deux implementations différentes (une pour
chaque systeme) pour des fonctions qui font la meme chose pour que tout
le reste du prog n'ais pas besoin de changer?

et tu fais
deux fichiers .cc d'implémentation, un pour Windows, et un pour les
Unix. Tu compiles le fichier .cc qui convient au système.


ouaip ca g compris :-)

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com



Avatar
kanze
3dsman wrote in message
news:...
3dsman writes:

vient de nous annoncer :

ok donc a priori c'est le plus simple de faire des fonction avec
des #ifdef et readdir, opendir, closedir / findfirst, findnext?!



Seulement si le but est l'obfuscation.


heu ca veux dire quoi? :-)


Que les #ifdef, c'est un bon moyen d'obfuscation, mais ne sont pas en
général très intéressant pour gérer des différences qui dépend du
système.

Tu fais un fichier .hh avec la définition de la classe, en te
servant de l'idiome du pare-feu de compilation, pour que rien de
l'implémentation n'y apparaît


heu et ca?
Un pare feu de compilation ca veux dire quoi?


L'idiome de « compilation firewall », aussi connu sous le nom de
« pimpl » ou de « Cheshire cat ».

que je fait une classe avec deux implementations différentes (une pour
chaque systeme) pour des fonctions qui font la meme chose pour que
tout le reste du prog n'ais pas besoin de changer?


C'est le concepte même d'une interface. Tu as un .hh qui définit la
classe (ton interface). Dans ce .hh, il n'y a rien qui dépend de
l'implémentation -- que des déclarations de fonctions et une déclaration
d'un pointeur vers les données de la classe (parce que les données
risquent de dépendre de l'implémentation).

L'idiome du pare-feu de compilation, c'est précisement celui de ne pas
mettre les données directement dans la classe, mais dans une classe à
part, qui n'est connue que de l'implémentation :

class Dir
{
class Impl ;
public:
// L'intérface que tu veux...

private:
Impl* myImpl ;
} ;

Dans le .cc, tu définis Impl et les fonctions.

L'idiome a été conçu au départ pour limiter des dépendances de
compilation ; si j'inclus Dir.hh, je n'inclus pas indirectement tout ce
qu'utilise Dir. (Dans de gros projects, son utilisation systèmatique
peut réduire le temps d'un build d'une facteur 10 ou plus.)

Ici, évidemment, ce n'est pas tellement les temps de build qui nous
motivent, mais le désir de garder tout ce qui dépend du système le plus
loin possible de la reste du code.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34




1 2 3