Opet ti nešto sa C++ Builderom, sumnjam da ga baš on koristi.
To nas on pokušava konvertirati pokazujući nam koliko je kraće kada se koristi VCL.
Opustite se malo, nema potrebe da si svi odmah međusobno skačemo za vrat.
Opet ti nešto sa C++ Builderom, sumnjam da ga baš on koristi.
To nas on pokušava konvertirati pokazujući nam koliko je kraće kada se koristi VCL.
Opustite se malo, nema potrebe da si svi odmah međusobno skačemo za vrat.
Ma bio je smajli, pa sam ga izbrisao .
Ne skačem za vrat, baš sam se nasmijao kad sam ugledao T prefiks ispred klase.
Opet ti nešto sa C++ Builderom, sumnjam da ga baš on koristi.
Možda sam prethodno tebe trebao konzultirati da mi ti kažeš u kojem obliku da napišem rješenje?
Skuliraj.
Samo sam mislio da nema smisla da mu pokazivaš nešto iz VCL-a, jer će on to možda napisati u svojoj aplikaciji koja nema veze sa VCL-om i razbijat će glavu što mu ne radi.
Fali smajlija.
EDIT: bio sam napisao VLC.
Skuliraj.
Samo sam mislio da nema smisla da mu pokazivaš nešto iz VLC-a, jer će on to možda napisati u svojoj aplikaciji koja nema veze sa VLC-om i razbijat će glavu što mu ne radi.
Sad si i opak postao?
Nemaš ti što misliti. Odi na google i pogledaj što su streamovi, na što se dijele i kako se koriste. To što je ispred klase "T" je sasvim nebitno jer sam mu pokazao princip, a ekvivalentnu klasu nije problem naći bez obzira kakvo razvojno okruženje koristi. Primjerice, .NET ima također svoj ekvivalent (mislim da se zove baš ResourceStream klasa) itd.
Aplikacija ne mora imati nikakve veze s VCL-om jer kad se uči programirati ne uči se source code već ispravan pristup, a to je u ovom slučaju: spremiti resurs u stream, a zatim stream u datoteku.
Nemaš ti što misliti. Odi na google i pogledaj što su streamovi, na što se dijele i kako se koriste. To što je ispred klase "T" je sasvim nebitno jer sam mu pokazao princip, a ekvivalentnu klasu nije problem naći bez obzira kakvo razvojno okruženje koristi. Primjerice, .NET ima također svoj ekvivalent (mislim da se zove baš ResourceStream klasa) itd.
Aplikacija ne mora imati nikakve veze s VCL-om jer kad se uči programirati ne uči se source code već ispravan pristup, a to je u ovom slučaju: spremiti resurs u stream, a zatim stream u datoteku.
Zove se ResourceManager (u .NET-u) (nismo mislili na isto), znam da je ne bitno, što se ljutiš?
Svi koji smo aktivni u podforumu programiranje znamo da imaš original C++ Builder (znam da si ga platio 1200€), pa te zato malo zezam, ne moraš se ljutiti.
Imam fajl od 1 MB koji bi trebao doći uz exe. I htio bi ga nekako embedati u exe, pa pri početku izvršavanja programa extractati u isti folder kao i moj exe.
Opet resursi. Ekstraktiranje nije potrebno jer ćeš dobiti pointer na blok memorije u koji je učitana ta tvoja embeddana datoteka, pa možeš odmah raditi s time umjesto da prvo ekstraktiraš na disk pa onda učitavaš s diska.
http://blog.kowalczyk.info/article/zy/Embedding-binary-resources-on-Windows.html
napravio sam ovo, i vidim da je exe porasao na oko 1,5 MB (to znači da je file najvjerojatnije unutra), no funkcija FindResource mi vraća NULL. U nju kao onu varijablu g_hInstance šaljem prvi parametar iz
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nCmdShow)
jel to pravilno radim...?
A u čemu ti uopće radiš? Koju biblioteku koristiš?
Ma stream kao stream , netko je spomenuo C# i streamove
using(StreamWriter writer = File:CreateText("datoteka.txt")
{
wrter.WriteLine("Pa ovaj koncept je @Tracer pokazao, bitan je koncept, a ne kod, i to je svugdje isto i ispravno");
}
- otvaranje streama
- pisanje streamom u datoteku
- zatvaranje streama
pišem u codeblocksu i embedam .jpg datoteku
Prvi argument ti je ok, a ostali?
Nešto si fulao...
FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_NEŠTO), RT_RCDATA);
GetModuleHandle(NULL) možeš koristiti kada nemaš već handle pri ruci (ti imaš), zadnji argument bi trebao odrediti vrstu resursa čiji handle pokušavaš dobiti, u tvom slučaju to bi trebao biti RT_RCDATA, što ti ostavlja drugi argument kao jedino mjesto gdje možeš nešto zasrati...
Kada neka funkcija ne uspije, možeš uvijek pozvati i GetLastError kako bi dobio errorcode i skužio o čemu se radi...
uploadao sam codeblocks projekt, molim vas pogledajte :)
uploadao sam codeblocks projekt, molim vas pogledajte :)
#define MY_RESOURCE 300
Super definirao si makro, a da ga za promjenu i iskoristiš pri pakiranju resursa u datoteku? :D
Dakle prva linija resource.rc datoteke bi ti trebala sadržavati:
#include "header.h"
Zato što resource kompajler nema pojma kolika bi trebala biti vrijednost MY_RESOURCE identifikatora (pa ga po defaultu vjerojatno postavi na nulu), tek kad ti dodaš header onda on skuži da je MY_RESOURCE zapravo makro koji ima vrijednost 300, pa onda iskoristi tu vrijednost.
Što se tebi dogodilo je da si pokušavao učitati resurs sa indeksom 300, koji se u stvarnosti nalazio na indeksu 0, ergo FindResource nije uspio jer ga nije pronašao tamo gdje si mu ti rekao da se nalazi...
Kako izdvojiti 5. cifru iz trinaestocifrenog broja..
char sbroj[20];
int znamenka;
long long broj = 123456789012345;
sprintf(sbroj, "%I64d", broj);
cout << "Koju znamenku zelite: ";
cin >> znamenka;
cout << sbroj[znamenka - 1];
char sbroj[20];
int znamenka;
long long broj = 123456789012345;
sprintf(sbroj, "%I64d", broj);
cout << "Koju znamenku zelite: ";
cin >> znamenka;
cout << sbroj[znamenka - 1];
Tako i ja znam.. :)
Al mi treba kao npr..neka formula
int n;
cin>>n;
a=?
a=taj broj 5.
Pa napravi funkciju koja vraća gornji rezultat.
Očito bi htio i funkciju na pijatu
Tako i ja znam.. :)
Al mi treba kao npr..neka formula
Treba i meni SIMD optimizirani alpha compositing, pa ne očekujem da mi ga netko drugi nakucka...
Da bi mogao izvući N-tu znamenku (gledajući broj s lijeva na desno), onda prvo moraš znati sveukupan broj znamenki u broju. Kada ideš s desna na lijevo onda nije problem izvući N-tu znamenku, jer ne moraš znati sveukupan broj znamenki...
Da bi dobio broj znamenki u broju prvo izračunaš logaritam sa bazom 10 tog broja, koji onda zaokružiš na najniži cijeli broj koristeći floor funkciju, te onda taj broj uvećaš za jedan. Dalje samo koristiš cijelobrojno dijeljenje i modulo operator kako bi dobio traženu znamenku.
Ako ti se od ovoga što sam upravo napisao zavrtjelo u glavi i ništa ti nije jasno, onda koristi tracerovo rješenje (koje je jednostavno i elegantno) jer je očito ovdje riječ o razini matematike koju još nisi učio.
Nije mi jasno. Od toliko mogućih kompliciranih zadataka za koje je dovoljno minimalno znanje matematike, vas nekolicina redovito udara po zadatcima koji su minimalno programski komplicirani a traže nešto veće znanje matematike. Jel vam to neki fetiš ili vas samo profesor mrzi?
Ma kakvo mu je to uopće pitanje, 5. cifra????
Od kud 5., slijeva, desna, od sredine??????
Zašto ne koristi matematičku notaciju kao sav normalan svijet - što hoće u stvari? Znamenku na mjestu 10^4 ili 10^8, e pa nema nitko staklenu kuglu da to vidi.
Dobio je super rješenje koje bira poziciju indeksom polja, case closed.
Nevezano za console C++, zanima me da li se itko pozabavio sa GUI-em u C++ (prvenstveno me zanima cross-platform GUI). Već duže vrijeme radim u Qt C++ i pišem generatore, sve to radi, međutim kod Qt-a je problem što moraš imati posebnu licencu da napraviš .exe/.dmg file osim za Linux. Kada sam prebacio projekt u Win i koristio minigw32 ja nikako ne mogu upogoniti tj. kompajlirati C++ nativno da radi samo sa .EXE file-om (qmake kompajler). Drugim riječima: http://stackoverflow.com/questions/4699311/how-to-install-qt-on-windows-after-building
Da li postoji neka druga alternativa? Da li se netko pozabavio sa "Lua"? Da li netko ima s tim iskustva? Podrzani GUI za Lua: http://lua-users.org/wiki/GraphicalUserInterfaceToolkits
Kad bi slozio toolkit za GUI, LUA podrzava:
GTK
Qt (LGPL with version 4.5) /medjutim aktualna verzija je 5.0 i već je komercijaliziran/
FLTK
Tk (gitgui je pisan sa Tcl/Tk)
Dakle koji je najbolji toolkit za crossplatform i da zaista rade ili ako ima netko nekakav tutorial kako pisati sam GUI toolkit za LUA/C++ i to jos da radi cross-platform?
međutim kod Qt-a je problem što moraš imati posebnu licencu da napraviš .exe/.dmg file osim za Linux.
Ha? Ne. QT se može licencirati na dva načina LGPL i komercijalno. Komercijalnu licencu moraš koristiti kada se ne možeš držati uvjeta koje LGPL licenca određuje.
Kada sam prebacio projekt u Win i koristio minigw32 ja nikako ne mogu upogoniti tj. kompajlirati C++ nativno da radi samo sa .EXE file-om (qmake kompajler). Drugim riječima: http://stackoverflow.com/questions/4699311/how-to-install-qt-on-windows-after-building
Nije mi uopće jasno kakav problem imaš. Ne možeš kompajlirati QT na windowsima? Ne znaš kako instalirati već kompajlirane biblioteke? Ne znaš koristiti kompajlirane biblioteke?
Jesi ikada radio sa Qt pod Linuxom i prebacio taj projekt na Windows Qt. Da li si pokusao podici projekt? E, to ne radi.
Naravno da ne radi. Medjutim kad prebacujes kod i kompajliras sa miniGW, nemozes kompajlirati standalone zbog libraryja koje koristi Qt. Na internetu ima brdo primjera kako kompajlirati nesto kao ovo http://techminded.net/blog/standalone-c-app-on-windows-with-qt-framework.html ali zelim cuti tko se bas s time bavio tko je provjereno isprobao.
Jesi ikada radio sa Qt pod Linuxom i prebacio taj projekt na Windows Qt. Da li si pokusao podici projekt? E, to ne radi.
I dalje ne razumijem problem. Imaš linux projekt koji se linka sa import bibliotekama koje ti omogućavaju korištenje dinamičkih QT biblioteka. Ista stvar je i na windowsima, samo što sve linkaš sa windows verzijom QT biblioteka.
Naravno da ne radi. Medjutim kad prebacujes kod i kompajliras sa miniGW, nemozes kompajlirati standalone zbog libraryja koje koristi Qt. Na internetu ima brdo primjera kako kompajlirati nesto kao ovo http://techminded.net/blog/standalone-c-app-on-windows-with-qt-framework.html ali zelim cuti tko se bas s time bavio tko je provjereno isprobao.
Ono što ti nazivaš standalone je statičko linkanje i nije dozvoljeno LGPL licencom.
Zar je toliki problem buildati dinamičke QT biblioteke (windows dll-ove) i onda njih koristiti u svom programu? Gotovo svaki windows QT program koji sam koristio je dinamički linkan sa QT bibliotekama.
E na taj sam ja dio mislio!
"
Ono što ti nazivaš standalone je statičko linkanje i nije dozvoljeno LGPL licencom.
Zar je toliki problem buildati dinamičke QT biblioteke (windows dll-ove) i onda njih koristiti u svom programu? Gotovo svaki windows QT program koji sam koristio je dinamički linkan sa QT bibliotekama.
"
Dakle to je razlog zasto ne bih trebao koristiti Qt. Iako se moze buildati statički koristeći DLL fileove, zanima me da li si radio neki primjer koji zaista radi?
Jesi ikada radio sa Qt pod Linuxom i prebacio taj projekt na Windows Qt. Da li si pokusao podici projekt? E, to ne radi.
Naravno da ne radi. Medjutim kad prebacujes kod i kompajliras sa miniGW, nemozes kompajlirati standalone zbog libraryja koje koristi Qt. Na internetu ima brdo primjera kako kompajlirati nesto kao ovo http://techminded.net/blog/standalone-c-app-on-windows-with-qt-framework.html ali zelim cuti tko se bas s time bavio tko je provjereno isprobao.
Daj pojsni ponovo. Niti nakon ovog drugog posta mi nije nimalo jasno gdje imaš problem.Ja konkretno u Qt-u radim već dosta dugo. Doma mi je mašina win7 a radim najviše za android koji se vrti na linux-u -> port ide preko necessitas projekta , pisao sam već o tome dosta u par tema niže. Uz to imam i na win7 redovan Qt Creator (+ mingw pogon) , prije toga radio s visual studiom + qt vs plugin.
Svaka aplikacija koju nakucaš u win kjutu bazično je u tili čas prenosiva na linux. Naravno da ima malih problema , konkretizirat ću :: na linuxu imaš openGL ko iz pi.ke odmah , na win-u moraš ići preko glew-a(skineš glew , kompajliraš ga toolchainom mingw-a koji koristiš i to je to -> GL radi kako spada) , na linuxu imaš prejaki valgrind , e na win-u ga nemaš osim ako ideš na remote checking itd...
Daj pojasni jer namam zapravo balge dume što te muči a vidim da si na Qt-u pa bih rado pomogao. Moji su projekti cca par kila koda do desetke i nikad nikakvog problema , šaltam s linuxa na win , natrag -> sve OK.
Da li te zapravo muči pojam licenci a ne tehničke pojedinosti ?
Dinamički build ti je osnova komercijale koju možš naplatiti a Qt si uzeo free , statički košta ali to bi trebalo proučiti licencu od prvog do zadnjeg slova.
Jesi ikada radio sa Qt pod Linuxom i prebacio taj projekt na Windows Qt. Da li si pokusao podici projekt? E, to ne radi.
I dalje ne razumijem problem. Imaš linux projekt koji se linka sa import bibliotekama koje ti omogućavaju korištenje dinamičkih QT biblioteka. Ista stvar je i na windowsima, samo što sve linkaš sa windows verzijom QT biblioteka.
Naravno da ne radi. Medjutim kad prebacujes kod i kompajliras sa miniGW, nemozes kompajlirati standalone zbog libraryja koje koristi Qt. Na internetu ima brdo primjera kako kompajlirati nesto kao ovo http://techminded.net/blog/standalone-c-app-on-windows-with-qt-framework.html ali zelim cuti tko se bas s time bavio tko je provjereno isprobao.
Ono što ti nazivaš standalone je statičko linkanje i nije dozvoljeno LGPL licencom.
Zar je toliki problem buildati dinamičke QT biblioteke (windows dll-ove) i onda njih koristiti u svom programu? Gotovo svaki windows QT program koji sam koristio je dinamički linkan sa QT bibliotekama.
Dok ja napisao , ti mu već odgovorio.
Samo nadopuna , ne moraš ni buildat sam ništa , nek skine s digi-e prebuild qt i sve je out of the box.
E na taj sam ja dio mislio!
"
Ono što ti nazivaš standalone je statičko linkanje i nije dozvoljeno LGPL licencom.
Zar je toliki problem buildati dinamičke QT biblioteke (windows dll-ove) i onda njih koristiti u svom programu? Gotovo svaki windows QT program koji sam koristio je dinamički linkan sa QT bibliotekama.
"
Dakle to je razlog zasto ne bih trebao koristiti Qt. Iako se moze buildati statički koristeći DLL fileove, zanima me da li si radio neki primjer koji zaista radi?
evo ti moj app
ako imaš android smartPhone skini i vidi
https://play.google.com/store/apps/details?id=org.kde.necessitas.example.SMASHHH
To ti je živi primjer dinamičkog bilda app-a s dinamičkim linknjem AKA nije standalone.
Predlažem ti da se držiš free dinamike pa jednog dana ako osjetiš da stvarno ima potrebe za komercijalnom verzijom , onda plati pa linkaj kako ti volja.
O čemu se točno ovdje priča? O statičko-dinamičkom linkingu ili "build-u" dll-ova, jer za "build" još nisam čuo.
Edit: Kako god da bilo, statičko linkanje dll-a je moguće samo ako je uz dll prisutna i njena statička biblioteka (lib) te je krajnje jednostavno za izvesti. Dinamičko linkanje je već komplikacija i nije baš prikladno za dll pun globalnih funkcija jer za svaku od njih treba imati funkcijski pokazivač te "ručno" doći do adrese pojedine funkcije. Uz to i samostalno je potrebno učitati dll te ga kasnije "ručno" i "osloboditi" itd itd.. A da ne pričam o problemima ako su u dll-u eksportabilne klase tj. njene metode. Dinamičkim linkingom je to krajnje komplicirano za izvesti.