GhostScript erreur de compilation shellapi

PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021 - 23 déc. 2017 à 12:07
PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021 - 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

2 réponses

papyvore Messages postés 223 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 16 décembre 2021 15
23 déc. 2017 à 16:25
salut
as tu essayé avec ShellExecute(Handle,'Open',PwideChar(.......
quelle version delphi mais dans ShellExecute c'est PwideChar et pas du string
0
PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021
27 déc. 2017 à 09:23
Merci, j'ai la version XE2...
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
24 déc. 2017 à 12:34
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,
0
PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021
27 déc. 2017 à 09:24
Merci Cirec, je regarde asap...
0
Rejoignez-nous