L_art_ment
Messages postés302Date d'inscriptionvendredi 21 septembre 2007StatutMembreDernière intervention 6 février 2013
-
7 janv. 2010 à 18:23
L_art_ment
Messages postés302Date d'inscriptionvendredi 21 septembre 2007StatutMembreDernière intervention 6 février 2013
-
8 janv. 2010 à 16:31
Messieurs Dames,
Je vous viens avec un petit problème qui m'épate et dont je ne comprend pas la cause (logique, si j'la comprennais, je posterais pas ici )..
Alors voilà, j'ai un domaine et chaque poste qui s'y connecte pour la premiére fois lance un petit script qui permet de récupérer les informations du poste (Système d'exploitation et version, type de machine, marque modèle, processeur etc...) afin d'avoir un petit inventaire, pour ce faire, le script lance l'executable MSINFO32 en ligne de commande (un utilitaire windows), celui-ci me créé un fichier sur mon serveur avec le nom du poste et les infos que je désirs.
Ce que je souhaite faire, c'est un petit programme qui va lire les infos du fichier et me les mettre dans une feuille excel. Bon, jusque là, pas de soucis. Mais lorsque mon programme lit le fichier, il voit : "ÿþR", voici mon code :
procedure TForm1.Button1Click(Sender: TObject);
var sl:TStringList;
begin
sl:=TStringList.Create;
sl.LoadFromFile('C:\inventaire\NOMMACHINE.txt');
memo1.text:=sl.text;
sl.free;
end;
J'ai essayé ce code pour l'un des fichiers que j'ai rapatrié sur mon poste (j'me suis dis au cas où que la cause serai le fait que le fichier soit sur un serveur...), mais s'affiche dans mon memo : "ÿþR"
J'ai essayé de créer un fichier TOTO.txt dans le même repertoire et en lisant ce fichier avec ce même bout de code j'obtient le bon text...
Est-ce le formatage du fichier généré par l'utilitaire MSINFO32 qui pose problème ? Car comme par hazard la première lettre du fichier est censé être un "R" et je vois affiché "ÿþR" comme si il ne m'affiché que le premier caractére encodé en je ne sais quel "language"...
Bref, j'ai besoins de votre aide pour comprendre le phénoméne , et merci pour cette aide
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 8 janv. 2010 à 12:35
un petit exemple pour la forme
[hr]procedure TForm1.Button1Click(Sender: TObject);
[b]const
/b{Signature Unicode} UnicodeSign = $FEFF;
[b]var
/bMS: TMemoryStream;
aUnicodeSign: Word;
aWideString: PWideChar;
[b]begin
/baWideString := nil ;
MS : = TMemoryStream.Create;
[b]try
/b {Charge le fichier}
MS.LoadFromFile('c:\msinfoReport.txt');
{On recupere la signature} MS.ReadBuffer(aUnicodeSign, SizeOf(Word));
{Si elle ne correspond pas on sort} if aUnicodeSign <> UnicodeSign [b]then
/bExit;
{On alloue la mémoire utile} aWideString : = AllocMem(MS.Size-SizeOf(Word));
{On recupere les données} MS.ReadBuffer(aWideString^, MS.Size-SizeOf(Word));
{On les convertis et on les affiches} Memo1.Lines.Text := WideCharToString(aWideString);
[b]finally
/b{Et on libère le tout avant de quitter} FreeMem(aWideString, MS.size-SizeOf(Word));
MS.Free;
end;
end;
L_art_ment
Messages postés302Date d'inscriptionvendredi 21 septembre 2007StatutMembreDernière intervention 6 février 2013 8 janv. 2010 à 08:45
Merci foxi pour ton interet !
voici ce qu'il y a dans mon script :
if not exist \\MONSERVEUR\MONPARTAGE\%COMPUTERNAME%.txt msinfo32.exe /report \\MONSERVEUR\MONPARTAGE\%COMPUTERNAME%.txt /categories +ComponentsProblemDevices
Donc je vérifie si un fichier au nom du poste n'existe pas, si il n'existe pas j'execute la commande et en ne sélectionnant que la catégorie ComponentsProblemDevices, comme ça j'ai les infos de base, plus les problèmes périphériques (si un driver n'est pas installé), le reste m'importe peu.
Mais le truc c'est que le fichier créé, j'arrive à le lire sans problème avec notepade...
L'Armand joue, l'arme en joug... www.art-ment.com
Vous n’avez pas trouvé la réponse que vous recherchez ?