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

Free Pascal Discussion :

Problème de conversion de NSString en string [Free Pascal]


Sujet :

Free Pascal

  1. #1
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut Problème de conversion de NSString en string
    Bonjour à tous,

    J'ai un problème de conversion de NSString en string :

    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
    35
    36
    37
    38
     
    type
      TDM_AccesBase = class(TDataModule)
      procedure DataModuleCreate(Sender: TObject);
      private
        {$IFDEF FPC}
          pAB_sFileName : NSString;
        {$ENDIF}
    ...
    procedure TDM_AccesBase.DataModuleCreate(Sender: TObject);
    begin
    {$IFDEF FPC}
      pAB_sFileName := MyDirectory.stringByAppendingPathComponent(NSSTR(PChar('/MyDB.sqlite')));
    {$ENDIF}
    end;
     
    {$IFDEF FPC}
    function TDM_AccesBase.MyDirectory : NSString;
    var
      paths : NSArray;
      fileName : NSString;
     
    begin
      paths := NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true);
      fileName := paths.objectAtIndex(0);
      Result := fileName;
    end;
    {$ENDIF}
     
    ...
     
    var NomFichier : string;
     
    begin
    {$IFDEF FPC}
    	try
     NomFichier := pAB_sFileName.UTF8string;  <---- ça plante la
    ....
    Pourquoi cela plante à l'affectation de la variable NomFichier, pourtant UTF8string fait la conversion, non ?

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par free07 Voir le message
    Bonjour à tous,

    J'ai un problème de conversion de NSString en string :

    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
    35
    36
    37
    38
     
    type
      TDM_AccesBase = class(TDataModule)
      procedure DataModuleCreate(Sender: TObject);
      private
        {$IFDEF FPC}
          pAB_sFileName : NSString;
        {$ENDIF}
    ...
    procedure TDM_AccesBase.DataModuleCreate(Sender: TObject);
    begin
    {$IFDEF FPC}
      pAB_sFileName := MyDirectory.stringByAppendingPathComponent(NSSTR(PChar('/MyDB.sqlite')));
    {$ENDIF}
    end;
     
    {$IFDEF FPC}
    function TDM_AccesBase.MyDirectory : NSString;
    var
      paths : NSArray;
      fileName : NSString;
     
    begin
      paths := NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true);
      fileName := paths.objectAtIndex(0);
      Result := fileName;
    end;
    {$ENDIF}
     
    ...
     
    var NomFichier : string;
     
    begin
    {$IFDEF FPC}
    	try
     NomFichier := pAB_sFileName.UTF8string;  <---- ça plante la
    ....
    Pourquoi cela plante à l'affectation de la variable NomFichier, pourtant UTF8string fait la conversion, non ?
    perso j'utilise getCharacters_range()
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut
    Bonjour Paul,

    Merci pour ta suggestion mais je n'arrive pas à trouver de la doc qui parle de getCharacters_range ( même dans la doc library d'apple )
    Après des heures de recherche, j'ai rien trouvé dans la doc d'apple et sur google seulement un ou deux exemples mais il sont en objective c et parle de getCharacters:range

    Apparemment c'est getCharacters_range(buffer, range) ??

    Buffer est un pointeur sur la chaine de caractère convertit et range le nombre de caractères à convertir ??

    Mais comment on l'utilises réellement, aurais tu un exemple à me donner ou mieux comment l'utiliserais tu dans mon code ?

    Merci d'avance

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    je l'utilise sous Delphi XE2 (string = UnicodeString) via objc_msgSend()...donc je ne connais pas la syntaxe FreePascal, mais le principe est là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function NSStringToStr(NS: NSString): string;
    var
      R: NSRange;
    begin
      R.location := 0;
      R.length := NS.Length;
      SetLength(Result, R.length);
      NS.getCharacters(@Result[1], R);
    end;
    mais je serais surpris que FreePascal ne propose pas une fonction toute faite pour cela...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    je l'utilise sous Delphi XE2 (string = UnicodeString) via objc_msgSend()...donc je ne connais pas la syntaxe FreePascal, mais le principe est là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function NSStringToStr(NS: NSString): string;
    var
      R: NSRange;
    begin
      R.location := 0;
      R.length := NS.Length;
      SetLength(Result, R.length);
      NS.getCharacters(@Result[1], R);
    end;
    Ok, en fait c'est getCharacters, je comprend mieux ( j'ai cherché avec getCharacters_rang )

    Citation Envoyé par Paul TOTH Voir le message
    j
    mais je serais surpris que FreePascal ne propose pas une fonction toute faite pour cela...
    Et bien j'ai cherché et j'ai pas trouvé mais en même temps, je n'ai pas de doc exhaustive sur free pascal.
    Merci pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/11/2007, 10h41
  2. Problème de conversion string->int
    Par seheiahs dans le forum Langage
    Réponses: 4
    Dernier message: 28/06/2006, 10h42
  3. Réponses: 6
    Dernier message: 07/04/2006, 18h23
  4. (Problème avec...) conversion de std::string en char
    Par crossbowman dans le forum SL & STL
    Réponses: 7
    Dernier message: 05/03/2006, 19h54
  5. problème de conversion int[x] --> string
    Par poussinphp dans le forum SL & STL
    Réponses: 2
    Dernier message: 17/08/2005, 14h45

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