WxShell, wxExecute – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

WxShell, wxExecute – C / C++ – Fórum – Programujte.comWxShell, wxExecute – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Benecore0
Newbie
14. 3. 2012   #1
-
0
-

Zdar,

Na úvod. Nečakal som, že so zostavovaním programov sú také problémy  

Jadro:

Chcem sa opýtať či neviete kde robím chybu. Toto používam

• Code::Blocks ako IDE

• wxWidgets 2.8.2

• Kompiler - TDM-MINGW32 4.6.1

Píšem si zatiaľ len také "malé" programy aby som získal prax v C++ a mám problém s poslaním príkazov do cmd.exe repsektíve ten problém je len na WinXP a možno Win95/98.

Program mi normálne funguje na mojom Win7 32bit a tiež som ho testoval na Win7 64bit, ale na WinXP (testované cez XP Mode) nefunguje.

Je to len GUI pre petran.exe (nokia) pre dekompresiu/kompresiu EXE/DLL. Neviete v čom by mohol byť problém? Treba to nejak inak skompilovať, alebo?

Pre upresnenie program sa spustí aj na WinXP a dokonca pošle príkaz do cmd.exe, ale súbory nerozbalí.

Pre poslanie príkazov do cmd.exe používam wxExecute (skúšal som wxShell) obidva funkčné na Win7.

Ďakujem

Nahlásit jako SPAM
IP: 178.40.25.–
DevPDA - Software development
http://devpda.net
m->29+6
Super člen
14. 3. 2012   #2
-
0
-

Kus kódu by bodol. Najlepšie celý projekt ak to nie je tajné, nech si to skúsim u seba na XP. Alebo vytvor minimálnu ukážku, ktorá ti nefunguje a daj ju sem ;-)

Nahlásit jako SPAM
IP: 83.240.51.–
Benecore0
Newbie
14. 3. 2012   #3
-
0
-

Tu je kód pre Drag and Drop:

Sú v ňom zakomentované veci ktoré som skúšal, ale ani tak ani tak...

class DnDFile : public wxFileDropTarget
{
    public:
        DnDFile(wxTextCtrl *owner)
        {
            m_owner = owner;
        }

        virtual bool OnDropFiles(wxCoord x, wxCoord y,
                             const wxArrayString& filenames)
    {
        //size_t nFiles = filenames.GetCount();
        //wxString str;
        //str.Printf(wxT("%d files dropped"), (int) nFiles);
        //m_owner->Append(str);
        //wxMessageBox(filenames[0], wxT("Info"));
        wxArrayString output;
        wxArrayString errors;
        m_owner->AppendText(filenames[0]);
        wxString cmd = _("petran -nocompress ") + m_owner->GetValue();
        //wxString subor = m_owner->GetValue();
        //wxStandardPaths path;
        //wxString cesta = path.GetDataDir() << wxT("\petran.exe ");
        //wxString TempString(cesta); TempString << wxT("-nocompress ") << subor;
        wxExecute(cmd, output, errors);
        //wxShell(TempString);
        //wxExecute(TempString, output, errors);
        m_owner->Clear();
        //wxShell("petran -nocompress " << filenames[n]);
        //m_owner->Clear();

        return true;
    }

    private:
        wxTextCtrl *m_owner;
};

A tu je samotná app. Funguje bezproblémov na Win7 tak neviem čo s tým.

http://update.devpda.net/petool/PETool.rar

Je v ňom aj exe súbor pre test. A tu je zdroják. Pre GUI som použil builder wxSmith. Písal by som ho sám, ale potreboval som rýchlo spraviť GUI aby som mohol testovať práve to čo nefunguje

http://update.devpda.net/petool/Source.rar

BTW: Viem, že to sem nepatrí, ale rovnaký problém mám aj s programom ktorý som robil vo wxPythone

http://www.devpda.net/rsceditor

Mne funguje na všetkých systémoch WinXP/Win732bit/Win764bit, ale napríklad pár Turkom vyhazduje chybu s kódovaním cp1250 a pár ostatným ľudom tiež nebeží (ide práve o túto dekompresiu inak program beží všetkým OK). A neviem ako tú chybu vyriešiť kedže sa nemám čoho chytiť.

Nahlásit jako SPAM
IP: 178.40.25.–
DevPDA - Software development
http://devpda.net
m->29+6
Super člen
15. 3. 2012   #4
-
0
-

No neviem, tiež mi to nefunguje, ale je to divné, lebo všetko vyzerá byť nastavené dobre. Sorry ale nemám čas na nejaké dlhšie skúmanie.

Nahlásit jako SPAM
IP: 83.240.51.–
Benecore0
Newbie
15. 3. 2012   #5
-
0
-

Aj tak dík. Neviem čo s tým je kedže je all OK  

Nahlásit jako SPAM
IP: 178.40.25.–
DevPDA - Software development
http://devpda.net
Benecore0
Newbie
16. 3. 2012   #6
-
0
-

Skúsil som obyčajnú konzolovú aplikáciu a funguje aj na WinXP.

#include <wx/utils.h>

wxString cmd = wxT("petran -nocompress test.exe");

int main()
{
    wxArrayString output;
    wxArrayString errors;
    wxExecute(cmd, output, errors);
    return 0;
}

Nemôže byť  problém v m_owner->GetValue() repsektíve v nejakom formátovaní alebo niečo?

Dík

Nahlásit jako SPAM
IP: 178.40.6.–
DevPDA - Software development
http://devpda.net
Řešení
m->29+6
Super člen
16. 3. 2012   #7
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

Teraz ma napadlo, či to zase nie je len v tých hnusných cestách s medzerami :-D

wxString cmd = wxString::Format(_T ("petran -nocompress \"%s\""), m_owner->GetValue());
Nahlásit jako SPAM
IP: 83.240.51.–
Benecore0
Newbie
16. 3. 2012   #8
-
0
-

Akurát mi odpísal jeden týpek na

http://forums.wxwidgets.org/viewtopic.php?f=23&t=34404&p=141260#p141260

If the full path contains spaces, you have to put it in quotes.

Hneď to idem vyskúšať, ale aj tak mi nejde do hlavy, že na Win7 to ide aj keď cesta obsahuje medzery a na WinXp nie. Idem testnúť

EDIT------------------------------------------------------------------------------------------------

Teraz to už nejde ani na Win7

Nahlásit jako SPAM
IP: 95.103.107.–
DevPDA - Software development
http://devpda.net
Benecore0
Newbie
17. 3. 2012   #9
-
0
-

Problém vyriešený. Formátovanie vstupu pomohlo, teraz to pracuje aj na WinXP-čkach.

Big thx m->29  

Nahlásit jako SPAM
IP: 95.103.107.–
DevPDA - Software development
http://devpda.net
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 46 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý