IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI Delphi Discussion :

[Kylix] passage de variable en Libc


Sujet :

EDI Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut passage de variable en Libc
    bonjour, je vous explique le pb
    ke fais une recip de text d'une Tedit et la'affecte à une variable := Fichier

    ensuite je lance Libc.system('gzip $Fichier'); en espérant qu'il récupère le nom du fichier entré dans le Tedit et le zip mais bloque et ne fait rien. alors je pense qu'il n'aime pas le $Fichier.
    Comment faire pour faire passer une variable dans le Libc et surtout en récupérer sa valeur affectée sous Kylix ?

  2. #2
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    Salut,
    Va voir ce qui est noté sur ce post:
    http://www.developpez.net/forums/viewtopic.php?t=186125
    Et remplace mon commentaire {macm:=''} par macmd:='tar et ses option'+TEdit1.text;
    ensuite tu remplace dans Erreur:=libc.system('ls'); le 'ls' par le contenu de ta variable macmd. Et tu verras si ca marche ou pas une fois le projet compile et autonome !
    la vie est belle

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    je te remercie, je l'ai vu ça mais ne savais comment l'adapter, je tente et te dis

    en attendant MERCI

  4. #4
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    Arff c du pascal Grrr
    Vais mordre!

    Pour exécuter une commande il te faut une chaine de caractere car c'est le shell qui l'excute: c'est exactement ce que tu tapperais dans une console ou un terminal.
    Pour créer cette chaine de caractère je suis passé par un tableau de caractère, cependant remarque bien qu'il n'y a pas le \n car c'est le tableau qui le crée et le bash l'interprete comme un enter. Par contre si tu utilise plusieur fois cette chaine il te faut la réiniatiliser mais comme je suis dessus en ce moment laisse moi le temps de vérifier mes dires.

    Ps:Je rigole
    la vie est belle

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    difficulté car si je fais :

    {mamcd := 'gzip'+TEdit1.text}
    Erreur := Libc.system('gzip'+TEdit1.text);

    g une erreur d'imcompatilbilité de variable entre String et Pchar ???

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    j'ai 3 jours de delphi et suis passé pour mon stage qui commence lundi sur kylix car doit faire migration delphi 5 en kylix sous mandrake et j'y connaissait que dale avant la semaine dernière; snif c pas évident you know !!!

  7. #7
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    bon passe par un string et récupère l'adresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
        Erreur:integer;
        strErr:string;
        macmd: string;
     
    begin
        macmd:='tar'+' '+TEdit1.text;
        libc.system(@macmd);
        strErr:=ToString(Erreur);
        if Erreur <> 0 then ShowMessage('Code retourné :' + strErr);
    end;
    la vie est belle

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    okay cela fonctionne mais j'ai un petit pb car dans le libc.system(@mamcd); il ne passe rien dans le linux à savoir que je ne vois pas se créer le fichier.gz mais si je récupère ce qu'il génère il fait un " gzip fichier" et sort un beau 0 en résultat.
    Je comprends pas alors qu'avant j'arrivait à faire des df avec grep et cut donc suis tjs obligé de passer par un fichier text intermédiaire ?

  9. #9
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    De mon cote je tente d'implementer la meme fonction (un binaire, un fichier d'entré, un fichier de sortie' et bien sur le test de retour).
    J'ai un pb : le Edit1.text renvoie un TCaption (qui est un widestring et c'est pour cela que ca merde); si tu donnes l'argument direct (ce qui doit etre entre '') ca passe dès que tu fait appel au tcaption ca merde, je suis arrive à créer un tableaux de PChar avec trois pointeur (pas terrible et c'est pas encore bon) moi je risque de devoir recréez un type pour récupérer ce tcaption en un ansistring, j'espere pour toi que tu n'auras pas besoin de tout ça.
    Voilà zheng je continu de mon cote envoie moi ton code si tu veux que je jette un oeil c'est tt ce que je peux faire pour toi.
    (Si j'arrive à qqchose de concluant je te le ferai savoir)
    la vie est belle

  10. #10
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    Salut zheng,
    La nuit portant conseil, je pense que cette façon devra t'aider je l'ai testé ce matin, et elle est assez concluante (remplace le code du bouton par celui ci le reste est identiques):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
        macmd,binaire,inFile,outFile: string;
        Erreur:integer;
        strErreur: string;
    begin
        binaire:= 'ls'; {remplace ls par tar}
        inFile:= Edit1.Text; {conversion du widestring en string pour récupérer le nom du fichier ou du repertoire marche aussi avec un FileEdit}
        outFile:= '/home/gaby/gaby3';
        macmd:=binaire+' '+inFile+' '+'>'+' '+outFile; {recompose ta ligne de commande}
        Erreur:=Libc.system(PChar(macmd)); {retour du pointeur de début, attention le PChar() n'a qu'une durée de vie tres limite}
        if Erreur = -1 then ShowMessage('Erreur'+ToString(Erreur)); {ce que tu test}
    end;
    la vie est belle

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    okay, cela fonctionne.
    j'ai fait quelques adaptations et maintenant c bon
    les voici
    mamcd := binaire+' '+inFile;
    Erreur:=Libc.system(Pchar(macmd));

    et là le fichier est bien compressé en passant 'gzip' en binaire.

    JE TE REMERCIE POUR TOUT, SANS TOI JE N'AURAIS PAS TROUVE

    MERCI

  12. #12
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    De rien, c'est normal mais penses à implementer une fonction générique.
    Moi c ce que je suis en train de faire (si c'est pour ton stage jette un oeil sur les codes erreurs du shell)
    Mets ton tag résolu et ammuse toi bien.
    la vie est belle

Discussions similaires

  1. Passage de variable dans une requête
    Par zestrellita dans le forum Langage SQL
    Réponses: 5
    Dernier message: 02/09/2004, 13h27
  2. [langage] Probleme passage de variables entre modules
    Par Ludo167 dans le forum Langage
    Réponses: 4
    Dernier message: 13/08/2004, 12h25
  3. Passage de variable dans un lien asp
    Par VirginieGE dans le forum ASP
    Réponses: 4
    Dernier message: 27/07/2004, 10h06
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo