Mon exécutable ne s'exécute qu'à travaire mon compilateur

hrp Messages postés 24 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 17 juin 2006 - 27 janv. 2005 à 10:38
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 28 janv. 2005 à 16:49
Hello,

j'utilise Borland C++ Builder 6 et mon application ne s'exécute que via le compilateur (Commande exécuter de Builder). Si je le lance via douvle click de puis l'explorer windows, l'exécutable ce lance mais n'affiche rien or il devrait ouvir une boîte de dialog! mon application est une application créer via l'"expert consol" et commance comme ceci:

//---------------------------------------------------------------------------
#include <vcl.h>
#include <vcl\Clipbrd.hpp>
#include <windows.h>
#include
//---------------------------------------------------------------------------
#define INI_FILE "config.ini"
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//read config file for options
TIniFile *iniFile = new TIniFile(ExtractFilePath(Application->ExeName) + INI_FILE);
bool optSaveToFile = iniFile->ReadBool("output", "save to a file", true);
bool optPrint = iniFile->ReadBool("output", "print", true);
int optMinMarginHorizontal;
int optMinMarginVertical;
bool optCenterPicture;
bool optOpenBmpFileAfterSave;
if(optSaveToFile || optPrint)
{
optMinMarginHorizontal = iniFile->ReadInteger("picture", "min margin horizontal", 250);
optMinMarginVertical = iniFile->ReadInteger("picture", "min margin vertical", 250);
optCenterPicture = iniFile->ReadBool("picture", "center picture", true);
if(optSaveToFile)
{
optOpenBmpFileAfterSave = iniFile->ReadBool("output", "open bmp file after save", true);
}
}
delete iniFile;


//make printscreen of curent active window
keybd_event(VK_SNAPSHOT,1,0,0);


bool bBoucle = true;
do
{
WaitForSingleObject(NULL, 20);
if(IsClipboardFormatAvailable(CF_DIB))
bBoucle = false;
}
while(bBoucle == true);


TClipboard *pCB = Clipboard();
if(pCB->HasFormat(CF_BITMAP)) //test Clipbaord data format (schould be bitmap format)
{
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
try
{
pBitmap->LoadFromClipboardFormat(CF_BITMAP, pCB->GetAsHandle(CF_BITMAP), 0);


if(optPrint)
{ //open print dialog window for printer select
TPrintDialog *prtnDlg = new TPrintDialog(NULL);
if(prtnDlg->Execute())
{
...

merci pour votre temps passer pour moi
huw

3 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
27 janv. 2005 à 12:43
salut,

certainement un pb de repertoire de travail.
pense a tester les valeures de retour de tes fonctions.

@++
0
hrp Messages postés 24 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 17 juin 2006
28 janv. 2005 à 14:21
non je pense plutôt que c'est un problem avec TComponent. TSaveDialog et TPrintDialog ont besoin d'un objet TComponent à leur instanciation or je n'en ai pas donc je leur pass NULL. c'est sans doute le problème. Builder doit le générer automatiquement, c'est pour ça que ça marche depuis Builder et pas depuis l'exécutable. mais comment obtenir TComponent* AOwner de l'application?

huw
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
28 janv. 2005 à 16:49
re,


cela voudrait dire que le builder modifie le paramètre que tu passe a ta fonction a ton insu ???j'y crois pas trop.


@++
0
Rejoignez-nous