Forum Clubic

Delphi - Word et String

Bonjour a tous, j’ai un petit probléme en delphi.
Dans le cadre d’une communication entre automate et mon ordinateur, je récupére des données de type Word.
Et je cherche a les stocker dans un tableau Excel, en utilisant le pilotage OLE.

Le probléme c’est que il faudrait que je puisse convertir mon Word en string, pour pouvoir le stocker dans ma feuille Excel, je ne sait pas s’il existe un moyen de le faire, ou une autre facon de faire.

N’hésitez pas a me posez des questions si le sujet n’est pas clair

Je ne suis pas tres OLE mais pourquoi as tu besoins de convertir ton fichier Word en chaine de caractère (ou plutot en donnée) ?
Normalement, tu n’as qu’a crée un objet de type OLE Word depuis ton fichier Word récupéré et voire s’il existe une méthode qui te permette d’insérer cet objet OLE vers une application compatible. (Excel en l’occurence)

j’ai du mal m’exprimer, je n’ai pas un fichier de type word, c’est mon type par exemple:

toto:Word;

et j’aimerais passer cela en string, mais je pense avoir trouvé

apparement les Word sont comme des integer car quand je fait un inttostr a toto par exemple il ne me crashe pas d’erreurs.

Ah ok, j’ai vu Word, Excel et OLE j’ai donc pensé à un document Word ^^
Un type Word tient sur 2 octets et un Int sur 4 octets sur x86 32 bits, le Word est par défaut signé avec Delphi si mes souvenir sont bon donc oui, IntToStr fait donc l’affaire.

J’ai encore un petit soucis, débutant sous DELPHI, j’ai du mal avec les pointeurs.
Voici ce que j’aimerais utiliser :


Type
    PWord = ^TWordFrame;
    TWordFrame = Packed Array[0..127]  Of Word;

et je souhaite utiliser la fonction

     
TMbReadHoldingRegisters = Function (
      Handle  : THEntry;       // Handle de connexion.
      Slave   : Byte   ;       // Numéro d'esclave ModBus. En général, 0 en TCP/IP.
      Address : Word   ;       // Adresse ModBus source.
      Count   : Word   ;       // Nombre de mots à lire.
      Data    : PWord           // Pointeur sur un tableau de retour. Doit être déjà alloué.
    ) : Integer        ;       // Vaut zéro en cas de succès, ou égal au numéro d'exception ModBus en cas d'erreur. Vaut (-1) en cas de timeout.
    StdCall;

Le probléme c’est que je ne sait pas vraiment comment allouer la mémoire pour le PWord voila ce que j’ai fait pour utiliser la fonction:


var
    listedesmots:PWord;
    valeur:integer;
begin
    new(listedesmots);
    MbReadHoldingRegisters(communication,0,90,25,listedesmots);
    ....

Mais je ne pense pas avoir correctement allouer la mémoire pour listedesmots

Votre aide me serait utile. Merci :??:

Je ne fait pas de Delphi mais GetMem devrait faire l’affaire ? :neutre: