begin process at 2012 05 29 06:45:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

1 exe, même params, 2 résultats !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

1 exe, même params, 2 résultats !

dimanche 23 octobre 2005 à 14:40:46 | 1 exe, même params, 2 résultats !

Galmiza

Salut,

J'ai fait un programme qui visualise des fichiers de scenes 3D.
Le chargement de la scene se fait ainsi.

    g_pScene->LoadScene(strInputName);

avec strInputName le nom absolu du fichier à charger.


Si je lance l'exe par double clique, je veux qu'on me demande quel fichier charger.
Si le deplace un fichier sur l'icone de l'exe, je veux que le fichier soit chargé.

Donc j'ai fait préalabrement:



    char strInputName[MAX_PATH];
    memset(strInputName, 0, MAX_PATH);

    // Get input
    if (*lpCmdLine == 0)
    {
        strcat(strInputName, "*.mcf");
        if (GetFileName(    strInputName,
                            "Select a Mesh Concept File",
                            "Mesh Concept File  (*.mcf)\0",
                            OFN_FILEMUSTEXIST  ) == FALSE)
            return 0;
    }
    else
    {
        // Get elements
        char* pStr = lpCmdLine;

        while (*pStr)
        {
            if (*(pStr++) == '"')
            {
                char* pStart = pStr;
                while (*pStr != '"' && *pStr != 0) { pStr++;}
                *pStr = 0;

                memcpy(strInputName, pStart, DWORD(pStr-pStart));
            }
        }
    }



Bref, je charge un même fichier dans les 2 cas, les strInputName sont IDENTIQUES.
Pourtant  le résultat à l'écran est DIFFERENT (manque les textures si drag and drop) !

Quelles lignes de code ci-dessus sont suceptibles de modifier des valeurs qui ruinent le chargement des textures.
J'utilise DirectX 9.0c mais pas la peine de taper dessus.


Merci !

PS:
BOOL GetFileName(char* pszFileName, char* pszTitle, char* pszFilter, DWORD dwFlags)
{

    OPENFILENAME ofn;
    ZeroMemory(&ofn, sizeof(ofn));

    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hwndOwner    = NULL;
    ofn.lpstrFilter = pszFilter;
    ofn.nFilterIndex = 1;
    ofn.lpstrFile = pszFileName;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = MAX_PATH;
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrTitle = pszTitle;
    ofn.Flags = dwFlags;

    if (GetOpenFileName(&ofn) != TRUE)
        return FALSE;
        return TRUE; 
}

dimanche 23 octobre 2005 à 14:47:37 | Re : 1 exe, même params, 2 résultats !

Galmiza

Dernières nouvelles,

Ce n'est pas la faute des lignes de codes mais uniquement du drag and drop !

En quoi le drag and drop empêche directX de charger des textures ???
dimanche 23 octobre 2005 à 15:08:59 | Re : 1 exe, même params, 2 résultats !

vangeurmasker

Membre Club
a mon avis fait des recherches du coté du repertoire ou il va chercher les textures. Dans le cas du drag and drop le repertoire par defaut du programe n'est pas forcémént celui ou il y a les textures. Essaye de ne pas utiliser les répertoires rélatifs.
dimanche 23 octobre 2005 à 16:05:17 | Re : 1 exe, même params, 2 résultats !

Galmiza

Merci, effectivement les noms des textures sont sauvegardés sous nom relatif à partir du dossier de l'exe.
Mais le fichier dragged and dropped belongs to ... heu appartient au même répertoire que l'exe. Donc normalement pas de confusion possible.

Je vais faire des essais en déplaçant les textures dans le cas ou le répertoire par défaut soit inattendu.
lundi 24 octobre 2005 à 17:10:15 | Re : 1 exe, même params, 2 résultats !

chris91

salut Galmiza,
if (*(pStr++) == '"')
il n'y a pas de guillement dans le nom du fichier "drag&dropé".

proposition pour un seul fichier :

char* pStart = lpCmdLine;
char* pStr = lpCmdLine;
if(*pStr)
{
  while(*pStr) pStr++;
  memcpy(strInputName, pStart, pStr - pStart);
}

vangeurmasker:
"Dans le cas du drag and drop le repertoire par defaut du programe n'est pas forcémént celui ou il y a les textures"

Effectivement, GetCurrentDirectory renvoie C:\Document and Settings\UserName en cas de drag&drop sinon renvoie le dossier de l'exe...

bye.
lundi 24 octobre 2005 à 17:22:14 | Re : 1 exe, même params, 2 résultats !

Galmiza

Chris, mon algorithme marche (j'avais testé comme toi au début mais les chaines de caractères sont encadrés par des guillemets et séparées par un espace), le nom du fichier est valide, la scene 3D se charge mais il n'y a pas de texture.

Mais effectivement, le drag and drop met le répertoire par défaut à "C:\Document and Settings\UserName"
Si GetCurrentDirectory ne donne pas le répertoire de l'exe, comment récupérer le répertoire de l'exe ?

Merci

mardi 25 octobre 2005 à 17:03:40 | Re : 1 exe, même params, 2 résultats !

chris91

ok, récapitulation :

1- si double clic sur exe :

   - GetCommandLine : "C:\DossierProg\ProgFile.exe"  // avec guillemets
  
   - GetCurrentDirectory : C:\DossierProg  // sans guillemet et sans \ à la fin

2- si drag&drop d'un ou plusieurs fichiers (dossier possible) :

   GetCommandLine : "C:\DossierProg\ProgFile.exe" C:\UnDossier\UnFichier.ext
                          // le 1er avec guillemets, pas le ou les suivants.
                          // ESP entre chaque.

   GetCurrentDirectory : C:\Document and Settings\UserName

Dans tous les cas le 1er argument renvoyé par GetCommandLine est le nom et chemin  du prog entre guillemets.
if(*lpszArgument) indique si il y a des arguments.

bye.
mardi 25 octobre 2005 à 21:37:58 | Re : 1 exe, même params, 2 résultats !

chris91

je reviens à la charge avec une nouvelle info,
en fait, il y des guillements mais uniquement si ESP dans le nom!!

drag&drop sans espace dans le nom :
GetCommandLine : "C:\DossierProg\ProgFile.exe" C:\UnDossier\UnFichier.ext
lpszArgument : C:\UnDossier\UnFichier.ext

drag&drop avec espace dans le nom :
GetCommandLine : "C:\DossierProg\ProgFile.exe" "C:\UnDossier\Un Fichier.ext"
lpszArgument : "C:\UnDossier\Un Fichier.ext"

drag&drop 2 fichiers,un avec espace et l'autre sans :
GetCommandLine : "C:\DossierProg\ProgFile.exe" C:\Autre.ext "C:\Un Fichier.ext"
lpszArgument : C:\Autre.ext "C:\UnDossier\Un Fichier.ext"

cette fois c'est bon ;)


Cette discussion est classée dans : fichier, char, pstr, ofn, strinputname


Répondre à ce message

Sujets en rapport avec ce message

Debutant : ecrire et lire un fichier txt [ par manu ] Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl ecriture fichier txt turboC++ [ par idk ] qqun connais une fonction, qui te place le cursor, (dans un fichier),CAD qui renvoie à la ligne suivante exemple char prenom="tom"char nom="bauq" Et d écriture dans un fichier txt [ par jimtruand ] bonjour,j'ai un fichier txt à traiter et à envoyer via ftp à un serveur. la partie ftp est ok.la partie fichier pt'problèmedans le fichier je dois mod Ecriture/lecture dans un fichier [ par SneakGuy ] Haaa... Merci, sa m'a aider... Enfin, j'ai encore plusieurs problemes...pour l'ecriture j'ai quelque chose qui ressemble a sa:char user[20];char pass[ ça concerne la lecture et l'ecriture sur un fichier et ... [ par wfish ] voila mon pb :j'ai fais un ptit prog de traitement de fichier. il sert à mettre certaines infos prises dans un fichier et les mettre dans un autre !!1 liste chainée et lecture d'un fichier txt [ par whiteknight ] Bonjour j'ai un probleme pour charger des données depuis un fichier texte, les données recupérées doivent etre stocké dans un liste chainée déclaré ai PROBLEME pour retourner un char* a partir d'un fichier [ par kobee12 ] Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang PROBLEME pour retourner un char* apres recuperation d'une chaine(sscanf) d'un fichier [ par kobee12 ] Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang Lecture/Ecriture/Modification d'une structure dans un fichier [ par paniX ] Bonjour. Alors voici mon probleme:j'ai créé une structure client qui a cette forme :struct client{ int id; char nom[30]; char prenom[30]; char adresse Taille de ma structure [ par crocejf2000 ] Salut a tous, J'ai un tres gros probleme qui me bloque toute mon avancé dans mon prog : j'ai une structure : typedef struct{ unsigned short Locate; ch


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales