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

Signaler
Messages postés
24
Date d'inscription
mardi 18 janvier 2005
Statut
Membre
Dernière intervention
17 juin 2006
-
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
-
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

Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

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

@++
Messages postés
24
Date d'inscription
mardi 18 janvier 2005
Statut
Membre
Dernière intervention
17 juin 2006

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
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
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.


@++