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

Langage Delphi Discussion :

Pchar et String


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut Pchar et String
    Hello, ca fait 1h que je cherche mes erreurs, mais, nada, rien, quedalle, je trouve pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    (* encoder command-lines and output files *)
     commands:array [0..1] of pChar=(
    	'oggenc.exe -o bass.ogg -', // oggenc (OGG)
    	'lame.exe -b32 -h - news-' + FormatDateTime('dd-mmmm-yyyy',Date) +'.mp3' // lame (MP3)
      // 'lame.exe --alt-preset standard - bass.mp3' // lame (MP3)
     );
    [Erreur] Unit1.pas(59): Types incompatibles : 'String' et 'PAnsiChar'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    (* encoder command-lines and output files *)
     commands:array [0..1] of pChar=(
    	'oggenc.exe -o bass.ogg -', // oggenc (OGG)
    	'lame.exe -b32 -h - news-' + PChar(FormatDateTime('dd-mmmm-yyyy',Date)) +'.mp3' // lame (MP3)
      // 'lame.exe --alt-preset standard - bass.mp3' // lame (MP3)
     );
    idem !
    [Erreur] Unit1.pas(59): Types incompatibles : 'String' et 'PAnsiChar'

    Je deviens fou

    Celui qui trouve.. chapeau !
    newbee on the place..

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Je ne sais pas si c'est possible mais essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (* encoder command-lines and output files *)
     commands:array [0..1] of pChar=(
       PChar('oggenc.exe -o bass.ogg -'), // oggenc (OGG)
       PChar('lame.exe -b32 -h - news-' + FormatDateTime('dd-mmmm-yyyy',Date) +'.mp3') // lame (MP3)
      // 'lame.exe --alt-preset standard - bass.mp3' // lame (MP3)
     );
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Ta proposition:
    [Erreur] Unit1.pas(59): Expression constante attendue


    J'ai essayé ça aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    (* encoder command-lines and output files *)
     commands:array [0..1] of (
       PChar('oggenc.exe -o bass.ogg -'), // oggenc (OGG)
       PChar('lame.exe -b32 -h - news-') + FormatDateTime('dd-mmmm-yyyy',Date) + PChar('.mp3') // lame (MP3)
      // 'lame.exe --alt-preset standard - bass.mp3' // lame (MP3)
     );
    c'est encore pire, même si ma logique est plutot bonne :-)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    buté 1h30 sur une connerie comme ça, jamais eu

    en attendant, je cherche :idc:

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    J'ai pas bien saisi le problème, mais si tu veux passer comme paramètre un Pchar pointant sur un tableau de char (terminé par un NULL) tu peux faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var Ptr : PChar ; S:string ;
    begin
    S:='ABCD'+#0 ;
    Ptr:=@S[1] ; 
    ...
    ce qui pour ton code donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var S0,S1 : string ;
    //...
    S0:='oggenc.exe ...'+#0
    S1:='lame.exe ...'+#0
    commands[0]:=@S0 ;
    commands[1]:=@S1 ;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Oui donc comme je le pensais, je crois qu'il va falloir que tu fasses l'initialisation dans le code.
    Genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    commands[0]:=PChar('...');
    commands[1]:=PChar('...');
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var S0,S1 : string ;
    //...
    S0:='oggenc.exe ...'+#0
    S1:='lame.exe ...'+#0
    commands[0]:=@S0 ;
    commands[1]:=@S1 ;

    je voudais bien tester ceci donc je met S0, S1 dans var
    mais commands[0] et [1] je le met ou ?

    je suis dans les variables générales..

  8. #8
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Dans les déclarations de variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var
    ...
       commands:array [0..1] of Pchar ;
    Begin
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  9. #9
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 258
    Points : 558
    Points
    558
    Par défaut
    salut mickaelmediaprod,

    Essaye de remplacer tes PChar par des PAnsiChar, et ça devrait fonctionnner... En effet tu dois caster directement ta chaîne de caractère de type string...

    A plus,

    Christopher

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    J'ai aucune erreur, mais le String est apparament codé dans un autre format..


    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
     
    var
     win:HWND=0;
     input:integer;				// current input source
     encoder:integer;			// current encoder
     rchan:HRECORD=0;	// recording/encoding channel
     chan:HSTREAM=0;			// playback channel
     commands:array [0..1] of Pchar; // Tableau 1
     files:array [0..1] of pChar=('temp.ogg', 'temp.mp3');
     
    ....
     
    procedure TForm1.FormCreate(Sender: TObject);
     var
      S0,S1 : string;
    begin
     
      S0 := 'oggenc.exe -o '+ files[encoder] +' -';
      S1 := 'lame.exe -b '+ Bitrate +' -h - '+ files[encoder];
      commands[0] := @S0;
      commands[1] := @S1;
     
    end;
    Si je fais un ShowMessage de commands[0] ou [1] j'ai un truc qui ressemble à :

    [carré] | TM (le sigle Trademark)




    Ca m'a pas l'air d'être un string ça :o

  11. #11
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    J'ai pas bien saisi le problème, mais si tu veux passer comme paramètre un Pchar pointant sur un tableau de char (terminé par un NULL) tu peux faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var Ptr : PChar ; S:string ;
    begin
    S:='ABCD'+#0 ;
    Ptr:=@S[1] ; 
    ...
    ce qui pour ton code donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var S0,S1 : string ;
    //...
    S0:='oggenc.exe ...'+#0
    S1:='lame.exe ...'+#0
    commands[0]:=@S0 ;
    commands[1]:=@S1 ;
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Si je met :

    #0 ca ne change rien

    et si je fais sans ; comme dans votre exemple, l'IDE me dit qu'il lui faut absolument..

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    J'ai essayé PAnsiChar PChar partout, ca change rien :o

    help

  14. #14
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    J'ai écrit :

    si tu veux passer comme paramètre un Pchar pointant sur un tableau de char (terminé par un NULL) tu peux faire ceci :

    var Ptr : PChar ; S:string ;
    begin
    S:='ABCD'+#0 ;
    Ptr:=@S[1] ;
    ...
    Ce qui était correct,

    Par contre, la suite était fausse et au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    commands[0]:=@S0 ; 
    commands[1]:=@S1 ;
    J'aurais du écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    commands[0]:=@S0[1] ; 
    commands[1]:=@S1[1] ;
    Désolé, il est parfois difficile de voir ses propres erreurs, quand on imagine que ce que l'on a écrit est ce que l'on a en tête.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  15. #15
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 258
    Points : 558
    Points
    558
    Par défaut
    Bonsoir,

    Et si tu essaies celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    commands:array [0..1] of pAnsiChar=(
       'oggenc.exe -o bass.ogg -', // oggenc (OGG)
       'lame.exe -b32 -h - news-' + FormatDateTime('dd-mmmm-yyyy',Date) +'.mp3'
    A plus et bon dev,

    Christopher

Discussions similaires

  1. Pchar et String dans le registre
    Par Duan dans le forum Débuter
    Réponses: 2
    Dernier message: 29/02/2008, 20h34
  2. Pchar => DLL (String manip) => Pchar showmessage
    Par Steff2 dans le forum Delphi
    Réponses: 2
    Dernier message: 21/07/2007, 15h04
  3. [Raccourci]-Pchar ,String
    Par aityahia dans le forum Delphi
    Réponses: 3
    Dernier message: 14/05/2006, 16h21
  4. Pchar , string .. déclaration..
    Par petitcoucou31 dans le forum Langage
    Réponses: 8
    Dernier message: 01/05/2006, 16h59
  5. DLL : récupérer des string/PChar...
    Par the_magik_mushroom dans le forum Langage
    Réponses: 8
    Dernier message: 10/11/2005, 10h58

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