Dobry den
Chcem sa spytat, ked pohybujem myskou smerom hore a dolu tak mi ide nalavo a napravo a ked idem s myskou nalavo a napravo ide smerom hore a dolu poradite mi ako to napravim?
Dobry den
Chcem sa spytat, ked pohybujem myskou smerom hore a dolu tak mi ide nalavo a napravo a ked idem s myskou nalavo a napravo ide smerom hore a dolu poradite mi ako to napravim?
Porovnávaj double +- epsilon
http://en.cppreference.com/w/cpp/types/numeric_limits/epsilon
Skús použiť funkciu GetWindowPlacement http://msdn.microsoft.com/en-us/library/windows/desktop/ms633518%28v=vs.85%29.aspx
vrátená štruktúra by mal mať v položke showCmd nastavené SW_MAXIMIZE
viac tu: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632611%28v=vs.85%29.aspx
Neskúšal so či to funguje, takže si radšej dôkladne preštuduj dokumentáciu.
Z chyby vyplýva, že linker nevie nájsť skompilované telo tej funkcie a je na tebe aby si našiel prečo.
Bez kódu sa ťažko radí, tak len môžem strieľať od brucha:
Môžu, ale myslím, že pre vnorenú triedu budeš museť ten generický typ deklarovať v jej o uroveň vyššej triede, asi takto:
public class C<T,U>{
public class S<U>{}
public void fnc<U>(U u){}
}
Tento spôsob by mal fungovať, ale možno existuje aj lepší.
Tu sa niekto pýtal na čosi podobné:http://stackoverflow.com/questions/7391877/how-to-add-checkboxes-to-jtable-swing
Ak ti jedno vlákno čaká kým bude buffer plný a druhé ho plní, tak môžeš použiť nejaký synchronizačný prostriedok. V tomto prípade bude asi najlepší Event http://msdn.microsoft.com/en-us/library/windows/desktop/ms682655%28v=vs.85%29.aspx. Vytvoríš si premennú typu Event na ktorú musia vidieť obe vlákna. Potom v čakajúcom vlákne zavoláš metódu WaitForSingleObject (http://msdn.microsoft.com/en-us/library/windows/desktop/ms687032%28v=vs.85%29.aspx), čím dosiahneš, že vlákno bude čakať, pokiaľ mu iné vlákno nepošle signál, v tvojom prípade o tom, že buffer je plný. Potom musíš zaistiť, že to druhé vlákno, ktoré ti ten buffer plní zavolá metódu SetEvent (http://msdn.microsoft.com/en-us/library/windows/desktop/ms686211%28v=vs.85%29.aspx) keď už bude buffer plný, čím pošle ten spomínaný signál.
Je to trocha zložitejšie na pochopenie, ale pri troche snahy sa to dá zvládnuť, len treba študovať dokumentáciu.
Prečo si proste do toho kódu nedáš breakpoint a neoddebuguješ si, čo ti ten tvoj kód vlastne robí, krok po kroku?
Bez kódu sa ťažko radí, skôr je to o hádaní. Keďže sa ti to zmení, ale na nesprávnom mieste, tak operáciu zmeny máš dobre, problém bude asi skôr v kóde, ktorý ti určuje ktorý text sa má zmeniť, tam by som hľadal najskôr..
Najjednoduchšia je asi SQLite: http://wiki.freepascal.org/SQLite, len si kukni do dokumentácie či to dokáže všetko čo od nej požaduješ.
Budeš potrebovať 2 triedy s preťaženým operátorom [].
Prvá bude napríklad CMatrixRow, ktorá v preťaženom operátore [] bude vracať double na danom indexe.
Druhá CMatrix, ktorá bude prostredníctvom operátora [] vracať triedu CMatrixRow.
Potom pôjde spraviť aj matrix[riadok][stlpec]
Na čo vlastne potrebuješ 10GB alokovanej pamäti?
Vo väčšine prípadov to indikuje zlý návrh a skoro vždy sa to dá navrhnúť iným spôsobom.
I keď je pravda že som už videl aj riešenie s alokáciou 10GB pamäti na cash, no to bol naozaj stav núdze kvôli optimalizácii.
podľa mňa je zlé znamienko v tejto podmienke for (int i = 0; i <= index; i++)
ak totiž bude index 0, tak ti vráti hodnotu na indexe 1. Takže asi to má byť skôr i < index. Teda ak chceš aby ti [0] vrátila hodnotu ktorú máš vo first.
Inak na tento riadok TQ[] array = new TQ[length]; ti kompilátor nenadáva?
Nepoznám štruktúru kódu, ale ak ide o nejakú triedu ktorú napísal učiteľ a ty potrebuješ len zabezpečiť aby sa na jednotlivé volania metód aplikovali zámky, tak sa dá spraviť to, že z učitelovej triedy podedíš inú v ktorej implementuješ všetky metódy tak, že urobia lock vykonajú metódu predka a potom spravia unlock. Odvodená trieda bude thread save, zatiaľ čo pôvodná trieda ostane nedotknutá. Ako som ale spomínal, najprv je potrebné zhodnotiť, či je tento postup vhodný aj pre to čo potrebuješ ty.
potom ma už len napadá "unload" knižnice:
http://codethesis.com/sites/default/index.php?servlet=4&content=2
ale netvrdím, že je to dobrý nápad
Ak ti ide iba o detekciu, či process trvá dlho tak využi join s timeoutom.
Ak ho chceš zabiť, tak môžeš skúsiť zavolať interrupt a čakať že niečo vyhodí výnimku InterruptedException, ale ak na to nie je tá externá knižnica pripravená tak sa s tým asi nedá nič robiť.
Ešte jednu vec tam máš zle. Java je case sensitive, čiže veľké písmeno znaku a malé písmeno znaku nie sú rovnaké takže napríklad na riadku máš chybu
animal alik = new Animal();
ak raz zadefinulejš typ Animal, tak typ animal je niečo čo on nepozná. Správne teda má byť
Animal alik = new Animal();
Takýto typ chýb ti bude v textáku stávať pomerne často.
#2 liborb
Debuger nepomôže, to som skúšal ako prvé, ale ide to cez kvázi framework a tam končím.
A čo sa týka tej správy tak nemáš zaručené že príde pri vykreslení okna a nie pred nejakou inou správou (napr WM_SHOWINDOW), keďže tie správy sa líšia aj podľa toho či zavoláš CreateWindow ,alebo CreateWindowEx.
#3 zlz
Díky za radu, to musím vyskúšať.
Ahojte, potreboval by som vo winapi vedieť detekovať stav keď sa okno po vytvorení prvý krát zobrazí. Správa WM_CREATE mi príde ešte pred zobrazením okna, tak isto aj WM_SHOWWINDOW. Existuje nejaká správa ktorá sa zaručene príde až pri zobrazení okna (a nie je to WM_PAINT)? Ešte ma napadlo poslať si vlastnú správu tesne pred ukončením spracovania WM_CREATE ale to mi nepríde ako ideálne riešenie.
Nenapadá niekoho nejaký postup?
#2 zlz Vďaka za usmernenie, presne toto som celý čas hľadal. Riešenie má byť:
SELECT meno FROM Tbl
START WITH meno='Ferko'
CONNECT BY PRIOR skupina=meno;
Pre prípadných záujemcov o problematiku: http://www.adp-gmbh.ch/ora/sql/connect_by.html
Ak je databáza Oracle tak použiť ExtractValue
Ahojte potreboval by som pomôcť s jedným selectom.
Mám tabuľku Tbl zo stĺpcami meno(PK) a skupina. Sú tam uložený užívatelia, ktorý patria do rôznych skupín, pričom aj skupina má jeden riadok v tejto tabuľky, čiže aj skupina je užívateľ. Takže skupina môže zas patriť do ďalšej skupiny a tak hierarchicky ďalej. Ak užívateľ/skupina patrí do istej skupiny tak v stĺpci skupina má názov tej jeho skupiny.
Teraz by som potreboval vypísať celú hierarchiu od určitého užívateľa napr Ferko, ale neviem ako na to.
Zatiaľ som sa dostal k tomuto:
Select b.meno FROM Tbl a, Tbl b WHERE a.meno='Ferko' AND (b.meno=a.meno OR a.skupina = b.meno);
ale to mi vypíše len skupinu o jednu úroveň vyššie.
Nemáte niekto nejaký nápad ako na to?
Nie som si na 100% istý, ale myslím, že VS limituje veľkosť stacku, čiže skús pohľadať niekde v properties ohľadom tohto, alebo na googli.
Inak dobrá rada do budúcnosti, namiesto bulharských konštánt 500000 a 250000 si vytvor normálnu konštantu VELKOST_POLA a potom ti stačí prepísať tú a vieš, že chyba nie je v tom že si zabudol prepísať jedno takéto číslo.
Algoritmus je dobrý, prekreslenie sa volá zakaždým keď príde správa timeru, pretože tie objekty čo vykresľujem sú dosť v pohybe. A aj keby nebol, tak v tejto fáze vývoja to nemá cenu meniť.
Tie butony sú v podstate vo vrstve nad tým, ale tak ma napadlo teraz, že by sa namiesto invalidateRect dalo volať invalidateRgn v ktorom mu osekám tie časti kde sú ovládacie tlačítka.
S tým recordom si na to šiel dobre, proste si musíš navrhnúť nejakú štruktúru ktorá bude zastupovať konkrétneho zamestnanca takže asi bude obsahovať meno, priezvisko, plat ... Potom si podľa toho koľko tých zamestnancov chceš vytvoríš pole zamestnancov a budeš pracovať potom iba s tým to poľom.
Čo presne nechápeš? Veď je to dosť po lopate.
Ide o to že môžeš vytvoriť ľubovolný počet inštancií určitého objektu. Napríklad si môžeš vytvoriť celý vozový park inštancii triedy auto. Aby kompilátor presne vedel na ktorú inštanciu chceš zavolať nejakú metódu(funkciu), tak si pridáva ten smerník this ako prvý parameter toho volania. Inak by mu nebolo jasné či má pohnúť napríklad červeným alebo zeleným autom.
To nervak : Je to minimálne čudné, že dokážeš mimo triedy zavolať private metódu. Však keď deklarujem nejakú metódu ako private hovorí to o nej že sa použije len na nejaké veci v implementácii rozhrania ktoré nemusia nikoho iného zaujímať a tento spôsob to obchádza.
Alebo mi niečo nedochádza? Budem rád ak ma poučíš, prečo je to v poriadku.
asi takto po úprave pár chýb:
//$arr=array(); netreba phpčko si ho vytvori
class ahoj
{
private $x;
public function __construct($t){$this->x=$t;}
public function ahoj() {echo "Class cislo ".$this->x;}
}
for ($i=0;$i<=10;$i++)
{
//$arr[$i]=new ahoj("$i"); toto ti priradí do každého objektu string "$i" čiže ($i,$I,$i ...) a nie hodnotu $i(1,2,3...) - to asi nechceš
$arr[$i]=new ahoj($i);
}
foreach($arr =>$objekt)
{
$objekt->ahoj();
}
/* alebo
for($i=0; $i<=10; $i++)
{
$arr[$i]->ahoj();
}
*/
Zdravím vás, chcel by som sa vás spýtať prečo keď si vytvorím .js súbor v ktorom sú len funkcie, potom ho pridám do index.php cez <script type="text/javascript" src="funkcie.js"></script> v hlavičke a potom chcem v kóde volať tieto funkcie napr <script type="text/javascript" >funkcia1()</script> tak sa prehliadač tvári ako keby poznal len tú prvú a tie ostatné už nie. Nejak mi nejde do hlavy čo robím zle.
Ahojte zaujímalo by ma ako je to s deklaráciou a definíciou static premennej
Napríklad mám funkciu:
void funkcia()
{
static int premenna= 0;
premenna++;
}
Ahojte mám podivný problém s vypínaním notebooku. Je to Toshiba a mám na ňom nainštalovaný windows XP. Problém je, že pokiaľ ho dám vypnúť a je napojený do elektrickej siete tak sa iba reštartuje, avšak ak ho odpojím zo zásuvky tak ide bez problémov vypnúť. Nemá s tým niekto skúsenosti? Budem vďačný za každú radu.
Ahojte potreboval by som poradiť, ako rozchodiť SDL_image pod Code::Blocks vo Windowse. Skúšal som už všetko možné, hlavne tento návod http://www.lazyfoo.net/SDL_tutorials/lesson03/windows/codeblocks/index.php ale stále mi to píše chybu "cannot find -lSDL_image". Prilinkované mám všetko. Už vážne neviem čím to môže byť. Nemá niekto nejaký nápad?
Ahojte zas riešim jeden zapeklitý problém, z ktorého neviem vykorčulovať a bol by som rád ak by sa našiel niekto kto by mi vedel pomôcť, alebo aspoň nasmerovať.
Mám triedu Base, a jej potomkov Dyn_obj a Stat_obj, ktoré majú tú istú virtuálnu metódu Draw() a
kontajner ktorý obsahuje smerníky na Base. Do neho samozrejme vkladám raz objekty typu Dyn_obj a inokedy Stat_obj.
Keď na každý jeho prvok zavolám Draw() tak sa to vykreslí správne. Problém, je však vtedy ak sa snažím spraviť kópiu tohoto kontajneru pomocou metódy Copy(). Ak ju dám potom vypísať tak sa všetky objekty kópie tvária ako typu Base. Prikladám kus kodu
Copy(Kontajner *kopia_kontajneru)
for(int i=0; i<100; i++)
{
if(kontajner->prvok(i) !=NULL)
{
Base* pom= Base(*kontajner->prvok(i));
Dyn_obj *pom_do = dynamic_cast<Dyn_obj *> (pom);
if(pom_do!=NULL)
{
pom_do= new Dyn_obj(* dynamic_cast<Dyn_obj *> (kontajner->prvok(i));
kopia_kontajneru->pridaj(pom_do); //ako parameter ma smernik na Base
}
}
}
Podľa môjho názoru by určite nemali začínať z objektovým prístupom, aj keď je fajn. Zo začiatku treba pochytiť hlavne základy vytvárania algoritmov. Ja by som určite bol za pascal, lebo je prehľadný a najbližšie sa približuje syntaxou myšlienkovým pochodom programátora.
ahojte mám v c++ niečo takéhoto
class A
{
private:
//nejake atributy
public:
//nejake funkcie
};
class potomokA: public A
{
private:
int atribut;
public:
int GetAtribut() {return atribut;}
};
A *trieda;
trieda=new potomokA;
trieda->GetAtribut();
Nazačiatok by som doporučoval najskôr naplniť tú maticu a až potom sa pýtať na to číslo. Ďalej namiesto read(a) používaj radšej readln(a), má to pár nežiaducich účinkov niekedy :) a teraz k tomu prečo ti to nevie povedať koľko tam toho máš. Napísal si to dobre (if[x,i]:=a then soucet:=soucet+1) ale asi si to zabudol dať do cyklu , takže si ho tam doplň a pôjde to.
Ďakujem, to z tým sčítaním vektorov mi veľmi pomohlo, len mám ešte jednu otázku. Ak mám daný bod, jeho smerový vektor a vzdialenosť ktorú má prekonať, ako sa dopočítajú jeho súradnice po prekonaní tej vzdialenosti? Zdá sa že som z tej analytiky toho už moc zabudol.
Ahojte riešim jeden problém, z kolíziou dvoch kruhov v 2D priestore. Ako som už povedal mám dva kruhy, poznám ich smerové vektory, ale netuším ako vypočítať ich smerové vektory po ich vzájomnej kolízii. Viem že tam treba použiť niečo z analytickej geometrie, tak som to dal do tejto sekcie. Budem vďačný za každú radu.
Neukladá sa to nikde, na to ti stačí jednoduché delenie ... čiže "/". Najprv si ale musíš zistiť zvyšok a až potom deliť čiastku. Napríklad máš čiastku 1234. Použiješ modulo a zistíš, že zvyšok je 234, následne vydelíš čiastku tisíckou a zistíš, že sa tam nachádza iba jedna. No a tak podobne až do jednotiek. Nič ťažkého, stačí si to napísať na papier.
Skôr mi ide o to, že keď volám nejaký scanf() tak v bufferi niečo ostane. Potom už volanie gets() spracuje to čo je v tom bufferi a tým sa akoby preskočí. Viem že v borlandackych kompilátoroch je niečo ako flush() čo vyprázdni tento buffer a všetko potom ide v poriadku, ale toto v ostatných kompilátoroch nefunguje.
To Johanka z Jarku : no ak čakáš že v dev alebo code::blocks rozbeháš kreslenie alebo funkcie ako clrscr() či random() z borlandu tak to ťa sklamem, toto dokážu len borlandacke prekladače a v žiadnom inom cčku ti to nepôjde. Namiesto clrscr použi system("cls").
To sXe : Pre maximum a minimum máš tri možnosti:
1. to čo spomínal KIIV ... dať to do pola a pretriediť
2. velmi elegantné riešenie cez funkcie ak ste ich už mali
int maximum(int x,int y)
{
if(x>y) return x;
lese return y;
}
int main()
{
int a,b,c,vysledok;
//nejake to nacitanie do a,b,c
vysledok=max(a,max(b,c));
}
int main()
{
int a,b,c,vysledok;
//zas nacitas
if(a>b)
{
if(a>c) vysledok=a;
else vysledok=c;
}
else
{
if(b>c) vysledok=b;
else vysledok=c;
}
}
Ahojte robím lineárny zoznam v Cčku, môj kód vyzerá zjednodušene asi takto:
typedef struct struktura
{
struct struktura *ppredok;
struct struktura *ppotomok;
}STRUKTURA;
void vytvor(STUKTURA *a ,STRUKTURA *predok);
int main()
{
STRUKTURA *hlavny=NULL;
STRUKTURA *ppom=hlavny;
vytvor(ppom,NULL);
//hlavny a teda aj ppom by nemali byt NULL ale nie je tomu tak
return 0;
}
void vytvor(STUKTURA *a ,STRUKTURA *predok)
{
a=(*STRUKTURA)malloc(sizeof(STRUKTURA));
a->ppredok=predok;
a->ppotomok=NULL;
}
Ahojte potrebujem konvertovať reťazec na reálne číslo, tak som na nete našiel funkcie atof a strtod ale po ich použití mi to dáva zvláštny výstup.
Môj kód je
char hodnota[60];
float numb;
numb=atof(hodnota);
printf("%s ... %f",hodnota,numb);
Ahojte robím jednu konzolovú aplikáciu v cčku, kde načítavam znak z klávesnice po jednom a následne ho aj vypíšem. Problém mám však s tým, že ak by sa užívatel pomýlil tak sa ten znak jednoducho vypíše ale už nejde zmazať backspacom. Chcem sa spýtať či sa dá nejak v konzole zmazať posledný zadaný znak. Budem vďačný za každú radu.