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 :

problèmes de type de string


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    programmeur
    Inscrit en
    Août 2023
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : programmeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2023
    Messages : 33
    Par défaut problèmes de type de string
    Bonjour,

    Voici un bout de mon code

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    type
    
    TDataRecord = record
      GUID : TGUID;
      Date : TDate;
      Heure : TTime;
      Montant : Integer;
      Description : String;
      Categorie : Integer;
      Compte : Integer;
      Repetition : Integer;
      Memo : String;
    end;
    
    
    procedure TdtmDataModule.LoadData(var DataRecord : TdataRecord; Index : Integer);
    var
      Enregistrement : String;
      i : Integer;
      Texte : ShortString;
    begin
      //
      if FileExists(NomMaBase) then
      begin
    
        i := 0;
    
        AssignFile(MaBase,NomMaBase);
    
        Reset(MaBase);
    
        while not Eof(MaBase) or (i <> Index) do
        begin
    
          Readln(MaBase,Enregistrement);
    
          Inc(i);
        end;
    
        CloseFile(MaBase);
    
        if (i = Index - 1) then
        begin
          with DataRecord  do
          begin
            Texte := Copy(Enregistrement,1,18);
            GUID := StrToGUID(Texte);
            delete(Enregistrement,1,21);
            Date := StrToDate(copy(Enregistrement,1,8));
            delete(Enregistrement,1,11);
            Heure := StrToTime(copy(Enregistrement,1,8));
            Texte := copy(Enregistrement,1,pos('","',Enregistrement))
            Montant := IntToStr(Texte);
    
            Description := copy(Enregistrement,1,pos('","',Enregistrement));

    le compilateur me dit "Types incompatibles : PWideChar et WideString
    et Aucune version surchargée de IntToStr ne peut être appelée avec ces arguments

    je suis un peu largué, si vous aviez un conseil ou plusieurs à me donner

    Merci de tout coeur

  2. #2
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    C'est pas plutôt ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Montant := StrToInt(Texte);
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function StringToGUID(const S: string): TGUID;
    Alors que dans ton code Texte est de type ShortString, s'il te faut absolument un ShortString, tu as la fonction function ShortStringToString qui convertit un ShortString en String

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut


    Pourquoi le ShortString ?
    Enregistrement est string ! Pourquoi Texte est ShortString ?
    Cela serait utile pour une lecture binaire du fichier directement du record, là c'est un split, donc string convient très bien
    En plus, il y a un risque de perte de caractère Unicode.




    Sinon, c'est pour un devoir scolaire ?
    Ce n'est pas une méthode viable à long terme un tel format de stockage.
    Sans parler de la lenteur de lecture (Delete selon le Memory Manager peut-être très lent)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    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 : 56
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    with DataRecord  do
          begin
            GUID := StrToGUID(Copy(Enregistrement,1, 18));
            Date := StrToDate(copy(Enregistrement,1 + 18, 8));
            Heure := StrToTime(copy(Enregistrement,1 + 18 + 8, 8));
            var i := Pos('","', Enregistrement);
            Montant := IntToStr(Enregistrement,1 + 18 + 8 + 8, I));
            Inc(i, 3);
            var j := Pos('","', Enregistrement, i);
            Description := copy(Enregistrement,i, j);
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/06/2007, 17h07
  2. [C++> C#]Comment régler problème de type TCHAR*/string ?
    Par fkerbourch dans le forum C++/CLI
    Réponses: 6
    Dernier message: 10/03/2006, 09h08
  3. [Sybase] Problème de type sous ASE
    Par Hotchotte dans le forum Sybase
    Réponses: 1
    Dernier message: 18/12/2004, 11h04
  4. problème our passer des string dans tableau d'int
    Par Battosaiii dans le forum C++
    Réponses: 9
    Dernier message: 15/07/2004, 17h42
  5. [TFileStream] Problème de lecture de string
    Par Pedro dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2004, 13h06

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