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 :

[ResourceString] ResourceString et Dlls


Sujet :

Langage Delphi

  1. #1
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut [ResourceString] ResourceString et Dlls
    Je recherche une fonction ou algo qui permette de recuperer une chaine ressource depuis une Dlls.

    Cette ressource est definie soit par ResourceString, soit par StringTable dans un fichier Res.

    L'exe charge la Dll, et doit recuperer les chaines qu'elle contient.
    LoadStr ne recherche que dans l'executable ou la Dll elle meme (hInstance)

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    et si tu remplace hInstance par le handle de la dll ? enfin peut être que j'ai mal compris en tout cas peut être que celà te sera utile :
    http://delphi.about.com/library/weekly/aa011805a.htm
    http://delphi.about.com/library/weekly/aa010405a.htm

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Ok .. mais LoadString est limité a "Size" Caracteres .... et ca m'embete car c'est un coup a avoir des strings tronqués

  4. #4
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Tu met une taille plus grande pour prendre un méssage plus grand. D'habitude moi j'aime bien 32768 comme taille .
    Si tu veux absolument connaitre la taille de ton méssage il faudrat passer par un ResourceReader et une lecture manuelle des resources ...

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par smyley
    D'habitude moi j'aime bien 32768 comme taille .
    Moi j'aime pas "gaspiller" la memoire comme ca :/

    Sinon pour le resource reader j'ai fait un peu comme ca ... une Dll avec une fonction exporte GetString :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Function GetString(ID : Integer) : PChar; StdCall;
    Begin
    Result := LoadStr(ID);
    End;
    En attendant mieux ....

  6. #6
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par Clorish
    Moi j'aime pas "gaspiller" la memoire comme ca :/
    Sauf que dans les cas où j'utilisait ça, je chargeait toute les chaines dans la même fonction que je copiait vers un string ( que je méttait dans un tableau ). Donc je n'utilise cette mem qu'une seule fois

  7. #7
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par smyley
    Citation Envoyé par Clorish
    Moi j'aime pas "gaspiller" la memoire comme ca :/
    Sauf que dans les cas où j'utilisait ça, je chargeait toute les chaines dans la même fonction que je copiait vers un string ( que je méttait dans un tableau ). Donc je n'utilise cette mem qu'une seule fois
    Ca se defends

    Moi c'ets pour faier une Dll de Langue pour charger plusieurs langues pour mon appli.

  8. #8
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    On dirait qu'en interne LoadStr utilises aussi un grand buffer dans une des fonctions appellées j'en voi un de 1024 caractères ...
    Finallement temps qu'à faire tu fait un PChar, tu initialise avec 1024 ou plus grâce à GetMem et quand tu as fini de t'en servir du fait un FreeMem, y'a pas de pertes là ... donc vive LoadString

  9. #9
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Je m'incline

    Je vais potasser ca :p
    MErci de ces details en tou cas

  10. #10
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut

    Au fait, voici comment les gars de Borland procèdent pour LoadStr dans une des fonctions appellées en interne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var
      Buffer: array [0..1023] of char;
    begin
      with PStrData(Data)^ do
      begin
        SetString(Str, Buffer,
          LoadString(Instance, Ident, Buffer, sizeof(Buffer)));
        Result := Str = '';
      end;
    end;
    L'ironie c'est que LoadStr appelle LoadString

Discussions similaires

  1. Réponses: 8
    Dernier message: 28/04/2011, 09h46
  2. ResourceString et fichier INI
    Par Droïde Système7 dans le forum Débuter
    Réponses: 8
    Dernier message: 24/06/2010, 10h24
  3. Modifier un resourcestring durant l'exécution
    Par arobasseb dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2010, 21h32
  4. Réponses: 1
    Dernier message: 21/11/2008, 14h02
  5. Resourcestring dans XMLCursor et Dll de traduction
    Par Jeweller dans le forum XMLRAD
    Réponses: 5
    Dernier message: 08/02/2006, 16h11

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