GhostScript erreur de compilation shellapi

Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
6 mai 2018
- - Dernière réponse : PhilLu
Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
6 mai 2018
- 27 déc. 2017 à 09:24
Bonjour,
Je reconconter une erreur de compilation pour ce bout de code:

uses:gsapi, ghosttools, shellapi;
var: Filenamein, FilenameOut : string;
Filenamein:= ExtractFilePath(opendialog1.FileName)+sid+' - '+IntToStr(myYear)+' '+Month+' '+Day+' '+Hour+''+Min+''+Sec+' - '+Prof+'.pdf';
FilenameOut:= ExtractFilePath(opendialog1.FileName)+sid+' - '+IntToStr(myYear)+' '+Month+' '+Day+' '+Hour+''+Min+''+Sec+' - '+Prof+'.tif';
ShellExecute(Handle,'Open','gs -dBATCH -dNOPAUSE -sDEVICE=tiffg4 -r600x600 -sDither=fast -sOutputFile='+FilenameOut+' '+Filenamein,nil,Nil,SW_SHOWDEFAULT);

Erreur de compilation: (le pointeur s'arrète derrière 'Filenamein' de la ligne ShellExecute)
[DCC Avertissement] pdf_to_txt.pas(203): W1058 Transtypage de chaîne implicite avec perte de données potentielle de 'string' en 'AnsiString'
[DCC Erreur] pdf_to_txt.pas(256): E2010 Types incompatibles : 'PWideChar' et 'string'
[DCC Avertissement] pdf_to_txt.pas(431): W1058 Transtypage de chaîne implicite avec perte de données potentielle de 'string' en 'AnsiString'
[DCC Erreur fatale] Project1.dpr(5): F2063 Impossible de compiler l'unité utilisée 'pdf_to_txt.pas'

J'ai tenté plusieurs variantes mais sans résultat
(dont
Filenamein:= PChar( ExtractFilePath(opendialog1.FileName)+sid+' - '+IntToStr(myYear)+' '+Month+' '+Day+' '+Hour+''+Min+''+Sec+' - '+Prof+'.pdf');

:(

Merci pour vos suggestions...
;-)

Joyeux Noël
Afficher la suite 

2 réponses

Messages postés
174
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
7 août 2019
4
0
Merci
salut
as tu essayé avec ShellExecute(Handle,'Open',PwideChar(.......
quelle version delphi mais dans ShellExecute c'est PwideChar et pas du string
PhilLu
Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
6 mai 2018
-
Merci, j'ai la version XE2...
Commenter la réponse de papyvore
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32
0
Merci
Bonjour,

essayes comme ceci:
     ShellExecute(Handle,'Open',PChar('gs -dBATCH -dNOPAUSE -sDEVICE=tiffg4 -r600x600 -sDither=fast -sOutputFile='+FilenameOut+' '+Filenamein),nil,Nil,SW_SHOWDEFAULT);



l'erreur devrait disparaitre mais pas certain que la commande s'exécute ;)

Il faudra peut être mettre FilenameOut & FilenameIn entre guillemets

     ShellExecute(Handle,'Open',PChar('gs -dBATCH -dNOPAUSE -sDEVICE=tiffg4 -r600x600 -sDither=fast -sOutputFile="'+FilenameOut+'" "'+Filenamein+'"'),nil,Nil,SW_SHOWDEFAULT);



PS:
que l'on soit en Ainsi ou en Unicode c'est PChar et string (les types génériques) qu'il faut utiliser
On utilise AnsiString & PAnsiChar
ou
WideString & PWideChar que dans des cas particulier
Ex. si on veut utiliser de l'Ainsi dans un environnement Unicode ou Inversement

PChar & string sont des types génériques déclarés comme ceci:

jusqu'à D2007
PChar = PAnsiChar;
string = AnsiString;

à partir de D2009 (Unicode)
PChar = PWideChar;
string = WideString;

en respectant cette simple règle la plus part des codes fonctionneront aussi bien en Ainsi qu'en Unicode et ce sans aucune modification.

Les problèmes de portage Ainsi >> Unicode viennent le plus souvent de mauvaises habitudes de codage prises en Ainsi mais qui n'avait aucune incidence tant que le code était compilé en Ainsi ^^
Mais avec l'apparition de l'Unicode les erreurs sont devenues flagrantes. Mais rien d'insurmontable en soi ;)
Cordialement,

Bonnes fêtes,
PhilLu
Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
6 mai 2018
-
Merci Cirec, je regarde asap...
Commenter la réponse de Cirec