GhostScript erreur de compilation shellapi

PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention - 23 déc. 2017 à 12:07 - Dernière réponse : PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention
- 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 

Votre réponse

4 réponses

papyvore 159 Messages postés samedi 15 novembre 2003Date d'inscription 1 août 2018 Dernière intervention - 23 déc. 2017 à 16:25
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 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention - 27 déc. 2017 à 09:23
Merci, j'ai la version XE2...
Commenter la réponse de papyvore
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 3 août 2018 Dernière intervention - 24 déc. 2017 à 12:34
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 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention - 27 déc. 2017 à 09:24
Merci Cirec, je regarde asap...
Commenter la réponse de Cirec

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.