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

Delphi Discussion :

un petit probleme avec TWideStringList de la JVCL


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Par défaut un petit probleme avec TWideStringList de la JVCL

    je suis entrain de realiser un petit composant avec 2 stringlist et j'utilse l'unitè JclUnicode pour gerer l'unicode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private
        FList: TStringList;
        FListW: TWideStringList;
        function GetList(const i{index}: Integer): TStrings;
        function GetListW(const i: Integer): TWideStrings;
        procedure SetList(const i: Integer; const Value: TStrings);
        procedure SetListW(const i: Integer; const Value: TWideStrings);
    public
    .
    ...
    published
        property MaListe: TStrings index {index} read GetList write SetList stored True;
        property MaListeW: TWideStrings index {index} read GetListW write SetListW stored True;
    end;
    et voici ce que j'ai eu dans l'inspecteur d'objet :
    maLsite avec le petit bouton qui me permet de modifier la liste et malisteW avec un + qui n'a aucun effet .

    je ne sais pas si c'est un bug dans la declaration de la TWideStringList dans la jvcl ou c'est quelque chose qui m'echape

    voici un bout de l'unitè JclUnicode pour ceux qui n'ont pas la la jvcl :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
      TConfirmConversionEvent = procedure (Sender: TWideStrings; var Allowed: Boolean) of object;
     
      TWideStrings = class(TPersistent)
      private
        FUpdateCount: Integer;
        FLanguage: LCID;        // language can usually left alone, the system's default is used
        FSaved: Boolean;        // set in SaveToStream, True in case saving was successfull otherwise False
        FNormalizationForm: TNormalizationForm; // determines in which form Unicode strings should be stored
        FOnConfirmConversion: TConfirmConversionEvent;
        FSaveFormat: TSaveFormat;  // overrides the FSaveUnicode flag, initialized when a file is loaded,
                                   // expect losses if it is set to sfAnsi before saving
        function GetCommaText: WideString;
        function GetName(Index: Integer): WideString;
        function GetValue(const Name: WideString): WideString;
        procedure ReadData(Reader: TReader);
        procedure SetCommaText(const Value: WideString);
        procedure SetNormalizationForm(const Value: TNormalizationForm);
        procedure SetValue(const Name, Value: WideString);
        procedure WriteData(Writer: TWriter);
        function GetSaveUnicode: Boolean;
        procedure SetSaveUnicode(const Value: Boolean);
      protected
        procedure DefineProperties(Filer: TFiler); override;
        procedure DoConfirmConversion(var Allowed: Boolean); virtual;
        procedure Error(const Msg: string; Data: Integer);
        function Get(Index: Integer): WideString; virtual; abstract;
        function GetCapacity: Integer; virtual;
        function GetCount: Integer; virtual; abstract;
        function GetObject(Index: Integer): TObject; virtual;
        function GetTextStr: WideString; virtual;
        procedure Put(Index: Integer; const S: WideString); virtual; abstract;
        procedure PutObject(Index: Integer; AObject: TObject); virtual; abstract;
        procedure SetCapacity(NewCapacity: Integer); virtual;
        procedure SetUpdateState(Updating: Boolean); virtual;
        procedure SetLanguage(Value: LCID); virtual;
      public
        constructor Create;
     
        function Add(const S: WideString): Integer; virtual;
        function AddObject(const S: WideString; AObject: TObject): Integer; virtual;
        procedure Append(const S: WideString);
        procedure AddStrings(Strings: TStrings); overload; virtual;
        procedure AddStrings(Strings: TWideStrings); overload; virtual;
        procedure Assign(Source: TPersistent); override;
        procedure AssignTo(Dest: TPersistent); override;
        procedure BeginUpdate;
        procedure Clear; virtual; abstract;
        procedure Delete(Index: Integer); virtual; abstract;
        procedure EndUpdate;
        function Equals(Strings: TWideStrings): Boolean;
        procedure Exchange(Index1, Index2: Integer); virtual;
        function GetSeparatedText(Separators: WideString): WideString; virtual;
        function GetText: PWideChar; virtual;
        function IndexOf(const S: WideString): Integer; virtual;
        function IndexOfName(const Name: WideString): Integer;
        function IndexOfObject(AObject: TObject): Integer;
        procedure Insert(Index: Integer; const S: WideString); virtual; abstract;
        procedure InsertObject(Index: Integer; const S: WideString; AObject: TObject);
        procedure LoadFromFile(const FileName: string); virtual;
        procedure LoadFromStream(Stream: TStream); virtual;
        procedure Move(CurIndex, NewIndex: Integer); virtual;
        procedure SaveToFile(const FileName: string); virtual;
        procedure SaveToStream(Stream: TStream; WithBOM: Boolean = True); virtual;
        procedure SetText(const Value: WideString); virtual;
     
        property Capacity: Integer read GetCapacity write SetCapacity;
        property CommaText: WideString read GetCommaText write SetCommaText;
        property Count: Integer read GetCount;
        property Language: LCID read FLanguage write SetLanguage;
        property Names[Index: Integer]: WideString read GetName;
        property NormalizationForm: TNormalizationForm read FNormalizationForm write SetNormalizationForm default nfC;
        property Objects[Index: Integer]: TObject read GetObject write PutObject;
        property Values[const Name: WideString]: WideString read GetValue write SetValue;
        property Saved: Boolean read FSaved;
        property SaveUnicode: Boolean read GetSaveUnicode write SetSaveUnicode default True;
        property SaveFormat: TSaveFormat read FSaveFormat write FSaveFormat default sfUnicodeLSB;
        property Strings[Index: Integer]: WideString read Get write Put; default;
        property Text: WideString read GetTextStr write SetText;
     
        property OnConfirmConversion: TConfirmConversionEvent read FOnConfirmConversion write FOnConfirmConversion;
      end;
     
      //----- TWideStringList class
      TDynWideCharArray = array of WideChar;
      TWideStringItem = record
        {$IFDEF OWN_WIDESTRING_MEMMGR}
        FString: PWideChar; // "array of WideChar";
        {$ELSE}
        FString: WideString;
        {$ENDIF OWN_WIDESTRING_MEMMGR}
        FObject: TObject;
      end;
     
      TWideStringItemList = array of TWideStringItem;
     
      TWideStringList = class(TWideStrings)
      private
        FList: TWideStringItemList;
        FCount: Integer;
        FSorted: Boolean;
        FDuplicates: TDuplicates;
        FOnChange: TNotifyEvent;
        FOnChanging: TNotifyEvent;
        procedure ExchangeItems(Index1, Index2: Integer);
        procedure Grow;
        procedure QuickSort(L, R: Integer);
        procedure InsertItem(Index: Integer; const S: WideString);
        procedure SetSorted(Value: Boolean);
        {$IFDEF OWN_WIDESTRING_MEMMGR}
        procedure SetListString(Index: Integer; const S: WideString);
        {$ENDIF OWN_WIDESTRING_MEMMGR}
      protected
        procedure Changed; virtual;
        procedure Changing; virtual;
        function Get(Index: Integer): WideString; override;
        function GetCapacity: Integer; override;
        function GetCount: Integer; override;
        function GetObject(Index: Integer): TObject; override;
        procedure Put(Index: Integer; const S: WideString); override;
        procedure PutObject(Index: Integer; AObject: TObject); override;
        procedure SetCapacity(NewCapacity: Integer); override;
        procedure SetUpdateState(Updating: Boolean); override;
        procedure SetLanguage(Value: LCID); override;
      public
        destructor Destroy; override;
     
        function Add(const S: WideString): Integer; override;
        procedure Clear; override;
        procedure Delete(Index: Integer); override;
        procedure Exchange(Index1, Index2: Integer); override;
        function Find(const S: WideString; var Index: Integer): Boolean; virtual;
        function IndexOf(const S: WideString): Integer; override;
        procedure Insert(Index: Integer; const S: WideString); override;
        procedure Sort; virtual;
     
        property Duplicates: TDuplicates read FDuplicates write FDuplicates;
        property Sorted: Boolean read FSorted write SetSorted;
        property OnChange: TNotifyEvent read FOnChange write FOnChange;
        property OnChanging: TNotifyEvent read FOnChanging write FOnChanging;
      end;
    Je remercie d'avance celui(ceux) qui m'eclairera(ont) sur ce point!

  2. #2
    Membre confirmé Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Par défaut
    On dirait bien un probleme sur le type twidestringlist de la jvcl, tu a essayé de faire pareil avec les compo unicode TNT ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Par défaut
    Merci Mr souch
    oui avec TTntStringList y'as pas de probleme

  4. #4
    Membre confirmé Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Par défaut
    Bon courage avec l'unicode, c'est pas une sinécure

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

Discussions similaires

  1. [C#] Petit problème avec un élément du FAQ
    Par matech dans le forum ASP.NET
    Réponses: 11
    Dernier message: 24/01/2008, 14h11
  2. Petit problème avec grep
    Par dug dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 11/05/2005, 15h34
  3. petit probleme avec Devil
    Par ellipse dans le forum DevIL
    Réponses: 2
    Dernier message: 01/02/2005, 18h41
  4. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 02/12/2004, 19h48
  5. petit probleme avec l'éditeur de builder
    Par qZheneton dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2004, 16h19

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