Anonymní profil RoboHK – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Anonymní profil RoboHK – Programujte.comAnonymní profil RoboHK – Programujte.com

 

Příspěvky odeslané z IP adresy 89.176.206.–

XML / XSL(T) › TinyXML2 jak na extrahování…
15. 7. 2017   #217081

To je pravda. Já mám ale výstupy z programu 2:
1) výstupní sestava - přímo z programu - jako stránka html (tu předávám dál, např. pro tisk nebo ke zpracování do ms excel, pdf...)

2) soubor samotný (fb databáze), který si můžu kdykoliv načíst, upravit data, doplnit atd. a expedovat dle prvního bodu.

XML / XSL(T) › TinyXML2 jak na extrahování…
15. 7. 2017   #217079

Dík za odpovědi. Doteď mám výstupní soubor vytvořen jako novou databázi FB a to mi funguje skvěle. Jak jsem psal, těmi důvody byla velikost výst. souboru (víc jak 900 kB) a nárůst serveru (fakt jsem  o tom kdysi na nějakém fóru četl ). Podle těch příspěvků na fóru byl zřejmý závěr, že počtem vytvořených databází velikost serveru značně narůstá. Já ale server opravdu nepitval a ruku do ohně za to taky dát nemůžu... 
To vše mě lákalo nevytvářet výstupní soubor jako novou databázi, ale využít XML. Myslel jsem, že s tím objemem dat bych se mohl vejít do 100 kB. Faktem ale taky je, že tabulky které ukládám mají smíšený formát (int, double, stringy v jednom řádku). A tady je u TinyXML2 pro mě komplikace. Kdybych potřeboval ukládat jeden typ na jeden řádek, vystačím si s příkladem ze stránek TinyXML2 a použil bych pro uložení / načtení vector. Ale vše převádět na const char* by bylo značně frustrující. A tak mám dojem, že nebudu nic komplikovat a nechám to tak, jak to je. ještě jednou dík za názory.

XML / XSL(T) › TinyXML2 jak na extrahování…
15. 7. 2017   #217075

Mám program v C++, který ukládá výstup do souboru. Jedná se o několika tabulek a taky několik dalších dat. Jelikož má C++ v této oblasti velmi omezené možnosti, řešil jsem výstup jako Firebird embedded 2.5.2 databázový soubor. To proto, že program při zpracovávání dat pracuje právě s touto databází. Výhodu je komplexnost, etc... prostě má nesporné výhody. Má ale i nevýhody. Výstupní soubor, ač může být informačně třeba poměrně chudý (málo dat k uložení), má cca 900 kB. Další nevýhodou (co jsem četl) je, že fbclient (server) v programu - si vnitřně ukládá informace o každé vytvořené databázi - tím i výstupních souborech. Tím by časem mohl program (v závislosti na počtu vytvořených výstupních souborů) přerůst rozumné meze. Proto jsem se rozhodl výstupní soubor ukládat v jiném formátu a volba padla na TinyXML2. Vše potřebné uložit umím, horší je to s opětovným načtením z výstupního souboru do programu. Čísla a řetězce načíst umím, neumím tabulky. Mohl by mi prosím někdo poradit jak na to?

RoboHK
C / C++ › Spustitelný výstupní soubor
8. 7. 2017   #216984

#20 gna
Omlouvám se, nebylo mi totiž jasné na kterém místě se to dá udělat. 

C / C++ › Spustitelný výstupní soubor
8. 7. 2017   #216982

Po doplnění do OnInit: 

wxString appname = BaseApp::GetAppName();
wxLogMessage (wxT("%s"), appname);

a všem to vypíše 'Rozpočet' místo 'A1-fbmr'. Což je hlavní program. Kde se prosím dopátrám toho názvu souboru, na který jsem poklepal myší a tím spustil program?

C / C++ › Spustitelný výstupní soubor
8. 7. 2017   #216981

Aha, tak tudy asi ne. Já jako první věc spouštím prázdný program. Až pak vytvářím Nový soubor, pak ukládám etc... Jde mi  o to, že když poklepu na ikonu výstupního souboru (např. A1.fbmr), spustí se prázdný program (bez vyplněných tabulek, co jsou již uloženy v tom A1.fbmr). A já teď přemýšlím jak získat ten název souboru a jak jej načíst. Kam to zapsat, jestli nějak už do bool MyApp::OnInit() nebo kam. 

C / C++ › Spustitelný výstupní soubor
8. 7. 2017   #216979

Dík, já myslel nahradit jej něčím velice zhruba podobným jako:

wxString commandLineArgs = wxTheApp->argv[0];

 parser.AddParam(commandLineArgs,....

Ale to je jenom nástřel, myslel jsem že argv[0] je název aktuálně spuštěného souboru. Ale nevím to jistě.

C / C++ › Spustitelný výstupní soubor
8. 7. 2017   #216977

Vše funguje skvěle, jenom když poklepáním na ikonu výstupního souboru spustím program, otevře se prázdný soubor (čistý program, bez uložených hodnot). Myslím, že to zařídí řetězec "document-file" z #2. příspěvku. Dle parser.Addparam(...) se jedná o 'const wxString & desc'.

Když jsem googlil, objevil jsem příklad, který (asi) platí pouze o vstup z konzole:

static const wxCmdLineEntryDesc cmdLineDesc[] =
{
    { wxCMD_LINE_SWITCH, "v", "verbose", "be verbose" },
    { wxCMD_LINE_SWITCH, "q", "quiet",   "be quiet" },
    { wxCMD_LINE_OPTION, "o", "output",  "output file" },
    { wxCMD_LINE_OPTION, "i", "input",   "input dir" },
    { wxCMD_LINE_OPTION, "s", "size",    "output block size", wxCMD_LINE_VAL_NUMBER },
    { wxCMD_LINE_OPTION, "d", "date",    "output file date", wxCMD_LINE_VAL_DATE },
    { wxCMD_LINE_PARAM,  NULL, NULL, "input file", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_MULTIPLE },
    { wxCMD_LINE_NONE }
};
wxCmdLineParser parser;
parser.SetDesc(cmdLineDesc);

Toto se patrně vkládá do hlavičkového souboru. Ale co s tím dál, nebo je to vše úplně jinak? Prosím o pomoc.

C / C++ › Spustitelný výstupní soubor
6. 7. 2017   #216947

#12 gna
Díííík, funguje to. Stačilo přesunout složku icons do složky bin. Ještě jednou děkuju za pomoc. 

C / C++ › Spustitelný výstupní soubor
6. 7. 2017   #216945

#10 RoboHK
Mám dojem, že program zatím nedokáže pracovat s příkazem:

wxStandardPaths::Get().GetResourcesDir()...

Zkoumal jsem příčinu chyby v src/msw/bitmap.cpp (řádek 922), jedná se o špatný převod wxDIB.
Ale když vrátím původní tvar výrazu, převod je OK a ikony se zobrazí. Tak si myslím, že se k 
převodu žádná ikona nedostane a proto vyhodí chybu.

C / C++ › Spustitelný výstupní soubor
6. 7. 2017   #216944

#9 gna
Díky moc, ale nefunguje. Zkoušel jsem i tvar"

wxImage newDB(wxStandardPaths::Get().GetResourcesDir() + wxT("\\icons\\document-new-5.png"), wxBITMAP_TYPE_PNG);

co mi poradil hodný člověk na fóru. Já mám ten handler ve zdrojáku cpp - v konstruktoru MyFrame:

wxImage::AddHandler(new wxPNGHandler);
wxImage new(wxT("icons/document-new-5.png"), wxBITMAP_TYPE_PNG);
...

 
Hlavičku <wx/stdpaths.h> mám pro jistotu v obou (h i cpp), tak fakt nevím. Po přepsání nefunguje ani hlavní program (spouštěný z IDE C::B 16.01 + wx 3.0.2 na W10). Chybové hlášky vypadají následovně:

Připojen obrázek.

Připojen obrázek.

C / C++ › Spustitelný výstupní soubor
5. 7. 2017   #216942

#7 RoboHK
To new je newDB

C / C++ › Spustitelný výstupní soubor
5. 7. 2017   #216941

#6 gna
Díky moc. Budu muset nastudovat, nevím kam to vložit a v jakém formátu. Já mám v konstruktoru ikony ve formátu:

wxImage::AddHandler(new wxPNGHandler);
wxImage new(wxT("icons/document-new-5.png"), wxBITMAP_TYPE_PNG);
...
...

Takže dík a jdu surfovat a googlit.

C / C++ › Spustitelný výstupní soubor
5. 7. 2017   #216938

Tak jsem to vyzkoušel a spuštění funguje. Ještě jednou dík. Nenačte ale interní ikony programu (New, Open, Save ....) a vyhazuje to jako chybu. Když chybu ingnoruju, program se spustí, ovšem bez ikon. Řádek v Inno vypadá následovně:

Root: HKCR; Subkey: "{#MyAppName}\DefaultIcon"; ValueType: string;  ValueName: "";  ValueData: "{app}\{#MyAppExeName},0"; 

Moje ikony jsou v samostatné složce Rozpočet\icons - ve formátu png. Má se upravit tento řádek, nebo se má definovat nový? Moc prosím o názor, popř. nakopnutí správným směrem. Studoval jsem na inno wiki příklad Lazarus, je tam toho opravdu hodně, ale interní ikony programu jsem nevystopoval. Ještě mě napadlo, že já do Files -  Source dávám celý adresář jako jeden blok, jestli to nechce vložit složku po složce samostatně. Nějaký nápad?

C / C++ › Spustitelný výstupní soubor
5. 7. 2017   #216937

#3 gna
Díky moc, ihned jdu laborovat. A k fbm / fbmr: ANO, když mi nefungovala jedna přípona, zkoušel jsem jinou a když jsem opisoval text z výstřižku (po změně přípony jsem nový nedělal), tak jsem opsal ten starý. V Inno mám příponu dobře, shoduje se s programem. Zrušil jsem starou příponu i v registrech přes cmd, takže tam je snad už pořádek. Mimochodem: kde jsi se prosím tě dočetl o té funkci, kterou si mi doporučil? Já mám knihu od J. Smarta (a nenašel, asi jsem nevěděl pod čím hledat). Potíž je taky v tom, že když hledám pomoc pro "samo-spustitelný soubor", tak je cca 99,99% pro výstup z kompilátoru (exe), což je dle mě už program (snad kromě hello world)... Ještě jednou dík a jdu na to. Dám vědět.

C / C++ › Spustitelný výstupní soubor
4. 7. 2017   #216930

Chtěl bych touto cestou poprosit o pomoc. Mám ve W10 Pro x64 svůj program v C++ (C::B, wxWidgets + Firebird embedded 2.5.2), který vyprodukuje výstupní soubor. Asociace souboru s programem nefunguje. Bohužel jsem nikde nenašel popis toho, co mi kde chybí. Jestli nějaký CreateProcess, nebo Shellexecute nebo něco jiného - natož co by to mělo obsahovat a kam to vrazit (program | soubor | Inno setup | jinam... ). Jedná se o nějaký *.bat spuštěný při poklepání na ikonu souboru nebo něco jiného? Stačilo by mě nasměrovat na nějakou vhodnou stránku, kde bych se dozvěděl víc a hlavně jak na to. Nebo alespoň objasnit základní princip. Teď - poklepání na ikonu souboru se objeví okno:

Unexpected parameter 'D:\AE.FBM'                // (můj výstupní soubor)

a následně se objeví další okno:

Usage: Rozpočet 2.0[/h][--verbose]                // (můj program)

/h, --help           show this help message

--verbose          generate verbose log message

Pascal › Inno Setup - asociace výstup…
4. 7. 2017   #216928

#2 gna
Díky moc. Budu to asi muset nějak (teď sice nevím jak) vyřešit v samotném programu. Nebo to řešit nebudu a budu otvírat soubory až po spuštění - z programu, jako doteď. Ale je mi to líto, že to nejde...

Pascal › Inno Setup - asociace výstup…
3. 7. 2017   #216922

Chtěl bych poprosit o radu jak vytvořit funkční asociaci souboru s programem, resp. kde dělám chybu. Mám W10 Pro x64, program je 32-bit.

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Rozpočet"
#define MyAppVersion "2.0"
#define MyAppPublisher "ITAC"
#define MyAppExeName "Rozpočet.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{99A7CB12-112F-43B8-86B3-7A91C2DD043A}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputDir=D:\wxDBA
OutputBaseFilename=rozpocet
Compression=lzma
SolidCompression=yes
ChangesAssociations=yes 

[Languages]
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "assoc_fmbr"; Description: "{cm:AssocFileExtension,{#MyAppName},.fmbr}"

[Files]
Source: "D:\Rozpočet\Rozpočet.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Rozpočet\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[Registry] 
Root: HKCR; Subkey: ".fbmr"; ValueType: string;  ValueName: "" ; ValueData: "{#MyAppName}"; Flags: uninsdeletevalue; Tasks: "assoc_fbmr"
Root: HKCR; Subkey: "{#MyAppName}"; ValueType: string;  ValueName: "" ; ValueData: "Program {#MyAppName}";  Flags: uninsdeletekey; Tasks: "assoc_fbmr"
Root: HKCR; Subkey: "{#MyAppName}\DefaultIcon"; ValueType: string;  ValueName: "";  ValueData: "{app}\{#MyAppExeName},0"; 
Root: HKCR; Subkey: "{#MyAppName}\shell\open\command"; ValueType: string;  ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""

Výsledkem je, že výstupní soubor AE.FBM vykopne okno:

Unespected parameter 'D:\AE.FBM'

a následně druhé:


Usage: Rozpočet 2.0[/h][--verbose]
/h, --help show this help message
--verbose generate verbose log messages

Nemáte někdo prosím potuchy jaké parametry mi chybí, nebo co mám blbě? Výstupní soubor je přejmenovaná databáze FB embedeed 2.5.2, ale když jsem provedl pokusně výstupní soubor v XML (přejmenoval a asocioval), choval se úplně stejně - po 2-kliknutí na ikonu vypsal identická okna (s jiným názvem souboru, samozřejmě). Někde jsem se dočetl, že se nemá používat HKCR, ale HKCU nebo HKLM - nevím ale jak. 

 

 

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