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

Anonymní profil Pepíno – Programujte.comAnonymní profil Pepíno – Programujte.com

 

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

C / C++ › Trojrozměrné pole a indexace
2. 12. 2008   #90937

No to sem rád :D

Jinak aby byl jasnej smysl mýho dotazu nahoře.

Když mam int pole[3] a dam vypsat pole[4] tak mi to vypíše nějaký náhodný číslo nebo nesmysl protože šaham do volný paměti že jo.

Proto sem myslel že když mam int pole [3][3] a vypíšu [0][4] tak to bude mít stejnej efekt. Ale nemá. Vypíše to prvek kterej je na souřadnicích [1][0] Toť vše... půlka lidí mě za to chtěla sežrat :D Tak sem asi špatně pochopil funkci vícerozměrných polí.

C / C++ › Trojrozměrné pole a indexace
2. 12. 2008   #90935

O-lox:

Pokud chceš poradit poraď, pokud ne tak se nevyjadřuj. Nemůžu za to že lezeš i na jiný fórum jako já.

Ozvalo se mi asi 7 lidí (včetně tebe) a jedinej TooM tady mi dal kloudnou odpověď. Jinak všude podobný jako ty křičej ... ježíííš to je blb, takový prasárny, tomu by se mělo zamezit a bla a bla a bla ....... Když si myslíš že jsi takovej mistr světa a já úplnej looser tak proč mi na každej dotaz odpovídáš (i když řečma stylu off-topic).

Zkrátka když uvidíš vlákno a tam autora Vollf, tak na to neklikej, budeš mít klid ne ???

To TooM Díky moc zkusim.

C / C++ › Trojrozměrné pole a indexace
2. 12. 2008   #90930

Zdravím lidi.

Udělal jsem si trojrozměrné pole (3x3x3) a můj problém spočívá v tom, že prvek který je na indexech [0][1][2] se zobrazí taky na indexu [0][0][5] atd. atd. Jak je to možné? Myslel sem že to nejde a docela bych se toho potřeboval zbavit. Může mi to někdo vysvětlit popřípadě popsat o co se jedná nebo jak se toho zbavit??? Pro názornost přikládám kus kodu.



#include <iostream>

using namespace std;

int main()
{

int pole[3][3][3];

cin >>pole[0][1][2];

cout << endl<<pole[0][1][2]<<endl;
cout <<pole[0][0][5];

cin.get();
cin.get();
return 0;
}
Vypíš obě čísla stejné. Tak to jde dál. pole[0][2][0] bude i na indexu pole[0][0][6] ale jak je to možné, když by pole nad index [0][0][2] nemělo existovat?? Díky za rady


C / C++ › OpenGL Quaternion
18. 11. 2008   #90033

Zdravím lidi, našel jsem jednoduchou třídu na quaterniony a dle popisu by měla eliminovat gimbal lock při rotaci. Ovšem nikde sem od rána nenašel návod nebo popis, jak přesně to použít.

Třída je zde: http://glprogramming.com/codedump/godecho/quaternion.html

Zkoušel jsem to takto:



float matice[16];
Quaternion A, B, C;

A.CreateFromAxisAngle(1.0, 0.0, 0.0, f);
B.CreateFromAxisAngle(0.0, 1.0, 0.0, g);

C = A * B;
C.CreateMatrix(matice);
glMultMatrixf(matice);

....


i takto:

float matice[16];

Quaternion A, B, C;

A.CreateFromAxisAngle(1.0, 0.0, 0.0, f);

C = C * A;
C.CreateMatrix(matice);
glMultMatrixf(matice);


A pak jeste různé kombinace. Tak jako tak, objekt se mi točí krásně, ale gimbal lock zůstává (čili se mi prohazujou osy X, Y a Z při vícenásobných rotacích). Mohl by mi někdo poradit co dělám špatně??

Díky

C / C++ › glRotatef()
12. 11. 2008   #89558

Tákže, pro ty co by měli stejný problém ... tento jev, který sem popsal se jmenuje gimbal lock (asi oficiální název). A zde je pár odkazů, z kterých se dá (snad) vyčíst řešení (něco je anglicky).

Dotaz s odpovědí na fóru builderu.cz - http://forum.builder.cz/read.php?124,2140623
Podrobný popis a řešení (ENG) - http://www.edharriss.com/tutorials/tutorial_xsi_gimbal/xsi_gimbal.html
Vysvětlení quaternionů (ENG) - http://www.gamedev.net/reference/articles/article1095.asp
Český NeHe tutoriál ohledně gimbal locku - http://nehe.ceske-hry.cz/cl_gl_kamera.php

Snad to někomu pomůže.

C / C++ › glRotatef()
11. 11. 2008   #89500

Jeste pripojuji teda zdrojáky at si to můžeš vyzkoušet. Chvíli rotuj a uvidíš že po pár rotacích jsou ty další už do nesmyslnejch směrů. Rotuje se šipkama a do třetího směru klávesami Q a E.

C / C++ › glRotatef()
11. 11. 2008   #89499

Dobrá dobrá, podrobně tady popíšu, co zrovna řeším a v čem spočívá ten můj problém. Celý kód je dlouhý na to ho sem dávat. Pokud chceš, pošlu ti ho mejlem (nechci spamovat tak se ptám).

Dělám 3D tetris (pro nezasvěcené). Kostku bude moci hráč rotovat do 3 směrů (x, y, z) podle os (používám tedy glRotatef() ). Jenže ta funkce nerotuje objektem, ale kamerou, takže po rotaci o 90° kolem osy X, uz osa Z prochází od shora dolů a osa Y prochází odzadu dopředu (takže se jakoby prohodí), což činí problémy při následné rotaci kolem další osy.

V kódu mam toto:

glRotatef(f, 1.0f, 0.0f, 0.0f);

glRotatef(g, 0.0f, 1.0f, 0.0f);
glRotatef(h, 0.0f, 0.0f, 1.0f);


Uživatel šipkou vždy přidá 90 k proměnné f, g nebo h takže se to při každém průchodu protočí. Ale zkus si zarotovat o 180° kolem nějaké osy. Následné rotace kolem zbývajících os budou zrcadlově převrácené (takže šipka doprava rotuje doleva) a následnýma rotacema se tento kolotoč ještě více zamotává. Pokud je někdo zkušenější v OpenGL, neříkejte mi, že ste se s tímhle nesetkali. Podstata problému, tak jak já to vidím je, že funkce glRotatef nedělá to, že se točí objekt, ale že obíhá kamera kolem objektu, takže to prohazuje ty osy. Já už to řeším vážně dlouho a bezvýsledně a napadlo mě i něco takového:

glRotatef(f, 0.0f, 0.0f, 1.0f); 

if(f==360 || f==-360) { f=0; }
if(f==0) { glRotatef(g, 1.0f, 0.0f, 0.0f); }
if(f==-270 || f==90) { glRotatef(-g, 0.0f, 1.0f, 0.0f); }
if(f==-180 || f==180) { glRotatef(-g, 1.0f, 0.0f, 0.0f); }
if(f==270 || f==-90) { glRotatef(g, 0.0f, 1.0f, 0.0f); }

if(g==360 || g==-360) { g=0; }
if(f==0 && g==0) { glRotatef(-h, 0.0f, 1.0f, 0.0f); }
if((f==0) && (g==90 || g==-270)) { glRotatef(h, 0.0f, 0.0f, 1.0f); }
if((f==0) && (g==180 || g==-180)) { glRotatef(h, 0.0f, 1.0f, 0.0f); }
if((f==0) && (g==-90 || g==270)) { glRotatef(-h, 0.0f, 0.0f, 1.0f); }

if((f==90 || f==-270) && (g==0)) { glRotatef(h, 1.0f, 0.0f, 0.0f); }
if((f==90 || f==-270) && (g==90 || g==-270)) { glRotatef(-h, 0.0f, 0.0f, 1.0f); }
if((f==90 || f==-270) && (g==180 || g==-180)) { glRotatef(-h, 1.0f, 0.0f, 0.0f); }
if((f==90 || f==-270) && (g==-90 || g==270)) { glRotatef(h, 0.0f, 0.0f, 1.0f); }

if((f==180 || f==-180) && (g==0)) { glRotatef(h, 0.0f, 1.0f, 0.0f); }
if((f==180 || f==-180) && (g==90 || g==-270)) { glRotatef(-h, 0.0f, 0.0f, 1.0f); }
if((f==180 || f==-180) && (g==180 || g==-180)) { glRotatef(-h, 0.0f, 1.0f, 0.0f); }
if((f==180 || f==-180) && (g==-90 || g==270)) { glRotatef(h, 0.0f, 0.0f, 1.0f); }


Čili ručně upravuju v závislosti na natočení, kolem které osy bude další rotace, ale to při 3 osách ve 3D prostoru je dost náročný a únavný na myšlení a dost náchylný na dělání chyb takže se mi to stejně ani nepovede. Ve 2D by to ještě šlo.

Už chápeš o co mi jde ? :)

Jinak fakt oceňuju tvojí pomoc protože sám s tim asi už nehnu :(

C / C++ › glRotatef()
11. 11. 2008   #89494

Ahoj :)

Díky za nápovědu ... tak nějak sem to zas procházel (a nejen to ale i spousta jinejch článků) a ejhle, už sem myslel že mam vyhráno, jelikož sem našel transformační matici pro rotaci (http://nehe.ceske-hry.cz/cl_gl_matice.php) takže sem myslel, že jí jen použiju funkcí glMultMatrix(matice). Točí se to točí, ale ne o 90°:(

Rotace na ose x:


[ 1, 0, 0, 0]

[ 0, cos(xrot),-sin(xrot), 0]

[ 0, sin(xrot), cos(xrot), 0]

[ 0, 0, 0, 1]



Tam místo toho xrot asi nejde dát jen 90 co ? Jeste se zeptám ... není to úplně to samý co dělá glRotatef(a, 1.0f, 0.0f, 0.0f) ?? Abych se s tim nepáral zas dva dny a pak nezjistil, že je mi to k ničemu.

C / C++ › glRotatef()
7. 11. 2008   #89262

Tak jsem to nakonec vyřešil takhle:

glRotatef(g, 1.0f, 0.0f, 0.0f);

if(g==360 || g==-360) { g=0; }
if(g==0) { glRotatef(f, 0.0f, 1.0f, 0.0f); }
else if(g==90 || g==-270) { glRotatef(-f, 0.0f, 0.0f, 1.0f); }
else if(g==180 || g==-180) { glRotatef(-f, 0.0f, 1.0f, 0.0f); }
else if(g==270 || g==-90) { glRotatef(f, 0.0f, 0.0f, 1.0f); }


Funguje to ale připadá mi to dost nešikovný ... opravdu to nejde jinak??

C / C++ › glRotatef()
7. 11. 2008   #89257

V nejakym tutoriálu psali, že glRotateF() vlastně točí jakoby kamerou, takže při otočení o 90° do strany se jakoby z osy Z vlastně stane osa X (cože je ten můj problém).

Bude nutné dělat v tomto případě výpočty pro rotaci krychle ručně? (jako že bych si nastavil vlastní matice pro posun a rotaci) nebo to jde nějak šetrně ošetřit nějakými funkcemi Open GL (nějakej reset těch os po natočení ale aby objekt zůstal otočený).

C / C++ › glRotatef()
7. 11. 2008   #89256

Zdravím lidi,

primitivní problém, s kterym uz se zas trápim 2 hodiny a ani to nemůžu nikde najít.

mám krychli a při zmačknutí šipek rotuje bud kolem osy X nebo osy Y. Kdyz ale zarotuje kolem osy x, a poté zmačknu rotaci kolem osy Y, nerotuje kolem Y ale kolem Z.

Problém je v tom , že v kódu to mam napsaný takto:

glRotatef(n++, 0.0f, 1.0f, 0.0f);

glRotatef(m++, 1.0f, 0.0f, 0.0f);


Takže ta první rotace vlastně převrátí (jakoby) osy pro tu druhou. A já hledám způsob, jak to po tý první rotaci jakoby vyresetovat na původní stav. Ve výsledku by to mělo vypadat tak, že krychle bude rotovat šikmo jedním směrem, a nebude sebou házet ze strany na stranu tak jak je to ted.

Zkoušel sem funkce glPushMatrix() a glPopMatrix() ale bezvýsledně. Existuje na to nějaká funkce nebo vychytávka?? Případně řešil to už někdy někdo?? Řek bych, že tenhle problém musí bejt docela častej.

Díky za odpovědi ....

C / C++ › SDL časovač
5. 11. 2008   #89132

No to je přesne to o co mi šlo :) Jen bych spíš chtěl vidět kód pro inspiraci. Tak já ti písnu na mejla ok?

díky

Jo jeste jedna věc. Napadá tě příčina, proč můj způsob nešel?? Myslím v tom kousku kódu co sem sem postnul na začátku jestli je nějaká závažná chyba který sem si nevšim, jako že by to tam něco zacyklilo apod. protože jak sem psal, se to kousne po zmačknutí šipky vlevo (což by mohlo bejt zacyklení). Ale kdyz se na to podívám, mělo by to jít.

C / C++ › SDL časovač
5. 11. 2008   #89129

Ahoj,

díky za radu :) Ja nejedu podle toho tutoriálu, tam sem jen koukal na způsob jak se dělá časovač, jinak je to celý můj projekt ;)

Omlouvám se za neznalost ale co znamená

rest(-rozdil)

??

Pokud na to máš skutečně náladu, tak to klidně přepiš jak bys to dělal ty, já se rád přiučím. V programovaní jdou psát stejné věci několika způsobama a ne vždy je lehký určit, kterej je ten nejlepší. To co jsi tu napsal beru jako takovy nakousnutí, v celku mi nenapadá jak si to myslel :)

Jestli chceš tak napiš a já sem postnu celý kódy, ať máš přehled jak to vlastně vypadá v celku.

C / C++ › SDL časovač
4. 11. 2008   #89086

Zdravím,

jsem z toho už na prášky takže bohužel mi nezbývá nic jiného, než se svěřit zase sem. Moje vize je taková, že mám krychli (tu už opravdu mám) vytvořenou v OpenGL a chci, aby při zmáčknutí levé šipky se otočila o 90° doleva, ale plynule, pomalu (dejme tomu otočení bude trvat 3 - 5 sekund) aby to bylo vidět. Dále nechci, aby to, dokud neskončí pohyb, neregistrovalo držení šipky (aby se nenačitalo dopředu pořád točení, ale do toho se pustím pak). Můj problém spočívá ve zpomalení té rotace. Mám udělanou třídu atd. ale vypíšu sem jen důležité části toho kódu.

Hlavni funkce (hlavni.cpp)



int WINAPI WinMain( HINSTANCE hInstance, // Instance
HINSTANCE hPrevInstance, // Previous Instance
LPSTR lpCmdLine, // Command Line Parameters
int nCmdShow) // Window Show State
{
MSG msg; // Windows Message Structure
BOOL done=FALSE; // Bool Variable To Exit Loop
.... .... ...
if (keys[VK_LEFT])
{
// yrot+=0.2f;
utvar.otoc('l'); // při zmačknutí levé šipky se zavola funkce ze třídy (tohle funguje)
...


Soubor se třídou cube.cpp




void tr::otoc(const char c)
{
int r = SDL_GetTicks();
int h = 0;
int m = f; // f je privátní proměnná třídy, udává momentální úhel natočení do funkce glRotatef(f, 0.0f, 1.0f, 0.0f);
... .... ....
switch(c)
{

case 'l':

while(f<=(m+45)) // z testovacích důvodů momentálně nastaveno otáčeni po 45°
{

if(SDL_GetTicks() < r + 1000) // pokud aktuální čas získaný v tomto bodě je menší než čas v r + 1 sekunda začni cyklus
// while znovu (tohle by mělo dělat zpomalení otáčení)
{
continue;
}

f++; // zvětši o 1° (teoreticky by tedy rychlost otáčení měla být 1° za 1 sec
r = SDL_GetTicks(); // načte do r aktuální čas
}

break;
case 'p':


Bez časovače a všeho okolo mi kostka normálně rotuje dokud držím klávesu (dost rychle ale) takže bych jinde chybu neviděl. Ale při tomhle použití co sem tu vypsal, jakmile zmačknu šipku doleva, program se kousne. Divný ovšem je, že když to trasuju, funguje to jak má, f se zvětšuje o 1° dokud to nedojede do 45° a normálně pokračuje dál, tak nevim proč se to při normálním spouštění kouše. Inspiroval jsem se tímto tutoriálem - http://nehe.ceske-hry.cz/cl_timer.php tak díky za rady, případně nápady jak to vylepšit. Kdybyste chtěli kompletní kod tak ho sem postnu.

kuju

C / C++ › Textury - uvolnění z paměti…
7. 10. 2008   #86691

Ehm ... tak ted si klepu na čelo no :( ach jo ...

díky moc ... chyběla přilinkovaná SDL.lib měl sem tam jen SDL_image.lib

C / C++ › Textury - uvolnění z paměti…
7. 10. 2008   #86685

Zdravím lidi, jsem tu zas. Předně bych chtěl podotknout, že už dělám pokroky v odhalování chyb a bugů v kódu, jen abyste si nemysleli, že se sem obracím s každou kravinou a pak mi nechtěli odepisovat :)

Začnu stručně. Pustil jsem se do OpenGL, v NeHe tutoriálech se používala knihovna glaux a někde sem se dočet že už je zastaralá, tak sem použil k nahrání textury SDL_Image (a povedlo se bez problémů).

Při použití glaux v tutoriálu ale uvolnovali pamět pomocí

if (TextureImage[0])// Pokud obrázek existuje

{
if (TextureImage[0]->data)// Pokud existují data obrázku
{
free(TextureImage[0]->data);// Uvolní paměť obrázku
}
free(TextureImage[0]);// Uvolní strukturu obrázku
}

Což mám za to já nemůžu použít, jelikož sem nahrál obrázek pomocí SDL_image. To nahrává obrázky do SDL_Surface (stále píšu moje domněnky, opravte mě pokud se pletu). Tak sem měl za to, že to musím logicky uvolnit pomocí SDL_FreeSurface().

Jenže kdyz tam dám (dodávám i nahrání obrázku pro ukázku)


SDL_Surface *IMG_Load ( char *Filename ) // Nahraje bitmapu
{
FILE *File=NULL;// Ukazatel na soubor
if (!Filename)// Byla předána cesta k souboru?
{
return NULL;// Pokud ne, konec
}
File=fopen(Filename,"r");// Otevření pro čtení
if (File)// Existuje soubor?
{
fclose(File);// Zavře ho
return IMG_Load(Filename);// Načte bitmapu a vrátí na ni ukazatel
}
return NULL;// Při chybě vrátíme NULL
}

int LoadGLTextures()// Loading bitmapy a konverze na texturu
{
int Status=FALSE;// Indikuje chyby
SDL_Surface *TextureImage[2];
memset(TextureImage,0,sizeof(void *)*1);// Vynuluje paměť
if (TextureImage[0]=IMG_Load("Data/flower.jpg"))// Nahraje bitmapu a kontroluje vzniklé chyby
{
Status=TRUE;// Vše je bez problémů

... //pokračování nějakého kódu

if (TextureImage[0])// Pokud obrázek existuje
{
SDL_FreeSurface(TextureImage[0]);// Uvolní strukturu obrázku
}

Tak mi to hlásí toto:

error LNK2001: unresolved external symbol _SDL_FreeSurface
1>C:\DATA\C++\OpenGL\OpenGL_2\Debug\OpenGL_2.exe : fatal error LNK1120: 1 unresolved externals



Řešil sem to tak, že sem tu paměť neuvolnoval ale vím že se to nemá tak se ptám. Je tam někde zakopanej pes a nemůžu na to přijít :(

Díky za reakce

C / C++ › SDL - šikmý pohyb?
24. 9. 2008   #85792

ok díky moc ...

C / C++ › SDL - šikmý pohyb?
24. 9. 2008   #85783

Tam je jenom jedna podmínka ne??

if(klavesa[SDLK_UP]);
a++;

by se dalo převíst do switche ne? Problém je, že je tam to pole no (teda aspon pro mě).

C / C++ › SDL - šikmý pohyb?
24. 9. 2008   #85779

Ještě bych prosil ... jak tam místo if() použít switch?? Vypadá to jako banalita ale at sem to prokombinoval jak sem chtěl, pořád mi to nebere :(

Tady je pár vzorů, jak sem to zkoušel:

Uint8 *klavesa = SDL_GetKeyState(NULL);
switch(klavesa){
case [SDLK_UP]:
...
...


a tak podobně všelijak. Při nějakejch pokusech mi to i psalo, že ve switchy nesmí bejt Uint8 tak sem to přetypoval na int ale bez výsledku.

Děkuju

C / C++ › SDL - šikmý pohyb?
22. 9. 2008   #85668

Bohužel vás musím opět otravovat, tentorkát už snad smysluplněji než s minulým problémem. Chtěl sem udělat, aby se mi obrázek hejbal po zmáčknutí šipek. Nahoru, dolů. doleva a doprava mi to funguje, ale jak to udělat kdyz zmačknu dvě šipky aby se hejbal šikmo? Nějak mi to nechce registrovat zmáčknutí 2 kláves najednou. Uz sem zkoušel plno možností ale stále nic. Kousek kódu:

 switch(event.key.keysym.sym)

{
case SDLK_LEFT:

a-=1;
DrawImage(screen, "flower.png", a , b);
break;

case SDLK_DOWN:
b+=1;
DrawImage(screen, "flower.png", a , b);
break;


case SDLK_RIGHT:

a+=1;
DrawImage(screen, "flower.png", a , b);
break;

case SDLK_UP:
b-=1;
DrawImage(screen, "flower.png", a , b);
break;

case SDLK_ESCAPE:
done=true;
break;
default:
break;
}


Napadalo mě něco takového:
 case SDLK_LEFT:			


a-=1;
DrawImage(screen, "flower.png", a , b);
if(event.key.keysym.sym == SDLK_UP) // přizmáčknutí další klávesy
{
a-=1;
b-=1;
DrawImage(screen, "flower.png", a , b);
}
break;

Ale při tomhle mi to při stisku šipky doleva jede šikmo. Zkrátka to nějak nevezme 2 klávesy stisknutý najednou. Nemá s tím někdo zkušenosti ???

Díky moc

C / C++ › SDL podruhé
22. 9. 2008   #85667

NO vida, stačilo jen napsta, že tu dyn. knihovnu .dll pro PNG musim přikopírovat k tomu projektu a hned bylo jasno. sice nevim proč se teda zadává v linkeru cesta k externím knihovnám ale hlavně že jsem o něco ( o dost ) moudřejší zase.

Díky moc všem a obzvláště survikovi za radu, která to zpravila ;)

C / C++ › SDL podruhé
19. 9. 2008   #85479

Aleluja, takze uz mi to funguje.

Za prvé: jiný obrázek již x=1 neházel, takže to bylo obrázkem (!!!) nechápu ovšem proč. .PNG formát by to brát mělo taky ne?? !!

Za druhé: do funkce sem musel dopsta to SDL_Flip(screen); jak mi tu taky někdo radil i přesto, že okno mam inicializované s parametrem SDL_SWSURFACE a někdo tu psal že to SDL_Flip se musí dělat u HWSURFACE ne ???

Pokud mi tohle někdo zodpoví budu vděčnej a zas o něco chytřejší ;)

Díky všem ...

C / C++ › SDL podruhé
19. 9. 2008   #85476

No konečně rozumnej člověk co mě hned nepošle do hajzlu. Zjistil sem, že chyba je někde v tomhle kódu -

SDL_Surface *image;

image=IMG_Load("flower.png");
int x=0;
if ( !image )
{
printf ( "IMG_Load: %s\n", IMG_GetError () );
x=1;
}


Jelikož to printf skutečně nikam nic nevypíše ani nevytvoří žádnej soubor (tucna věřit nemusí), a nebo to ten soubor vytváří úplně jinde než u programu a v tom případě nevim kde, tak sem si tam přidal to x=1 jako testovací hodnotu a skutečně to to x změní na 1 tudíž chyba je někde v tom image=IMG_Load("flower.png");. Nechápu ale proč. Našel sem si k tomu i dokumentaci a jedná se o jednoduchej příkaz, na kterym snad nejde ani nic zkazit. Ten obrázek MAM u exáče toho programu. Ale i kdyz sem zadal absolutní cestu k obrázku tak to stejně nešlo. Zkusim to teda ještě s jinym obrázkem v jinym formátu ale nevim proč to nejde s timhle. Obrázek normálně otevřu takže poškozenej taky neni.

C / C++ › SDL podruhé
17. 9. 2008   #85376

warningy čtu, uznávám že ty escape sekvence v tý cestě mě nenapadly, ale říkám, kdyz tam dám

DrawImage(screen, "C:\\DATA\\C++\\SDL\\2\\flower.png" , 40, 30);

nejde to taky.

Za další, kdyby ten příkaz
if ( !image )

{
printf ( "IMG_Load: %s\n", IMG_GetError () );
return 1;
}

vytvořil nějakej log, byl bych moc rád a asi bych sem ani nepsal a poradil si sám. Jenže to nikde nic nenapíše ani nevytvoří, a jak mi bylo řečeno tady v mym prvnim topicu, novější verze SDL upustili od výpisu do soubory nebo jak to tu někdo psal.

Tak konec kódu mam ted takhle:

bool done=false;


while(done == false){
SDL_Event event;

while(SDL_PollEvent(&event) ) {

if(event.type == SDL_QUIT) done=true;
}
DrawImage(screen, "C:\\DATA\\C++\\SDL\\2\\flower.png" , 40, 30);
SDL_Flip(screen);
}
return 0;
}
taky to nejede. Jeste to vyzkouším dát jinam (do smyčky) nebo to SDL_Flip() dát do tý funkce DrawImage, nebo mě aspon nějak naveď protože tímhle se fakt hodně naučím a sem ti za to vděčnej.

Jinak máš pravdu, debugger používat neumim, tuším co to dělá, ale nevim jak to dělat (to trasování, krokování a já nevim co ještě). Kdybys věděl o nějakym návodu na VC++ 9.0 budu ti vděčnej (mam ale express edition, neni v ní náhodou debugger odstraněnej??).

jeste jednou díky ...

EDIT: Podotýkam že tohle sem sem dal dřív než sem si přečet to od mephiho takže je vidět že taková lama zas nejsem :)) (já vim, sem, ale samouci to měli vždycky těžký) ;)

C / C++ › SDL podruhé
17. 9. 2008   #85367

No je sice pravda ze by ty lomítka bez escape sekvencí mohly dělat problém. Ale ono to nejde ani kdyz ten obrázek hodim k tomu exáči a dam tam jen "flower.png". Takže to tím asi nebude.

Jak postupuju? Zkopíruju si tu funkci DrawImage(..,..,..,) z manuálu k tý funkci a poupravim podle tutoriálu. Ale jak sem psal, to samý mi to dělalo i kdyz sem zkopíroval celej příklad a ani na něj nešáhnul.

C / C++ › SDL podruhé
17. 9. 2008   #85363

Tak sem to samý rozchodil bez chyby v Dev C++ a obrazek se opět neobjeví. Pouze černý okno s titulkem. Čili špatným linkováním a podobnejma věcma to bejt nemůže :( .... poomoooooocc .... please

C / C++ › SDL podruhé
17. 9. 2008   #85354

Tak tamto už sem dořešil, radši založím novej topic. Chci načítat ten obrázek ale stále se neobjevuje. Chybu tam nikde nemůžu najít, už sem udělal i to že sem zadal absolutní cestu k obrázku ale stále je to okno jen černý. Pomůžete mi najít chybu please? Zdroják uz zkracuju.

#pragma comment (lib, "SDL_image.lib")

#pragma comment (lib, "SDL.lib")
#pragma comment (lib, "SDLmain.lib")

#include <stdio.h>
#include <SDL.h>
#include <SDL_image.h>

int DrawImage( SDL_Surface *surface, char *image_path, int x_pos, int y_pos )
{
SDL_Surface *image = IMG_Load ( image_path );
if ( !image )
{
printf ( "IMG_Load: %s\n", IMG_GetError () );
return 1;
}

// Draws the image on the screen:
SDL_Rect rcDest = { x_pos, y_pos, 0, 0 };
SDL_BlitSurface ( image, NULL, surface, &rcDest );
SDL_FreeSurface ( image );
return 0;
}

int main(int argc, char *argv[])
{
if( SDL_Init(SDL_INIT_VIDEO) < 0 )
{
printf("Inicializace SDL se nezdařila: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);

SDL_Surface *screen;
screen = SDL_SetVideoMode(600, 480, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
if ( screen == NULL )
{
printf("Vytvoření okna se nezdařilo: %s\n", SDL_GetError());
exit(1);
}

SDL_WM_SetCaption("Ahoj", NULL);

bool done=false;
while(done == false)
{
DrawImage(screen, "C:\DATA\C++\SDL\2\flower.png" , 40, 30);
SDL_Event event;
while(SDL_PollEvent(&event) ) {
if(event.type == SDL_QUIT) done=true;
}
}
return 0;
}


Zkoušel sem tu funkci volat i až za tou smyčkou SDL_Event ale ani to nešlo. Dík ...

C / C++ › SDL nekreslí
17. 9. 2008   #85347

Brý ráno :)

Tak sem to vyřešil přidáním řádku #pragma comment (lib, "SDL_image.lib") ... někde sem čet že je to jako ruční linkování knihoven. Opravte mě jestli se pletu. Ale proč teda sakra si to VC nenajde tu knihovnu samo, kdyz v Options projectu zadam linkeru cestu k tomu adresáři, kde ta knihovna je?? Proto sem stále nechápal proč mi to nejede. Nebo to tak nefunguje??

Tak jako tak se to ted spustí, chybu to nepíše žádnou, ale obrázek to taky nevykreslí takže sem tam kde sem byl. Ach jo, jdu se v tom zas hrabat no.

C / C++ › SDL nekreslí
16. 9. 2008   #85278

No z toho SDL_image.h ... Citace z tutorialu:

Nahrávání obrázků z disku

SDL umí nahrávat pouze obrázky ve formátu BMP, ale díky knihovně SDL_image, která se už stala de facto jeho součástí, může programátor používat i PCX, GIF, JPG, PNG, TGA, TIFF a další méně známé formáty. Stejně jako celé SDL je i SDL_image šířena pod licencí GNU LGPL.

Po přilinkování knihovny a vložení hlavičkového souboru SDL_image.h je možné volat funkci IMG_Load(), která vrací surface nahrávaného obrázku. Formát je detekován automaticky podle přípony, hlaviček apod.

SDL_Surface *SDL_LoadBMP(const char *file);
SDL_Surface *IMG_Load(const char *file);


C / C++ › SDL nekreslí
16. 9. 2008   #85273

Tak jeste me napadla jedna vec. Vkladam sem screeny jak mam nalinkovany ty knihovny, treba nekoho jeste neco napadne.

C / C++ › SDL nekreslí
16. 9. 2008   #85270

To sem tam měl. Nicméně sem tam vyzkoušel všechny 4 možnosti a píše to stále to samý.

C / C++ › SDL nekreslí
16. 9. 2008   #85266

Zdravím a jsem tu zas :)

Může mi někdo poradit s touhle chybou co to vypisuje??

1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
1>2.obj : error LNK2019: unresolved external symbol _IMG_Load referenced in function "int __cdecl DrawImage(struct SDL_Surface *,char *,int,int)" (?DrawImage@@YAHPAUSDL_Surface@@PADHH@Z)
1>C:\DATA\C++\SDL\2\Debug\2.exe : fatal error LNK1120: 1 unresolved externals



Pravděpodobně vím co někdo napíše - že chybí přilinkovaná knihovna nebo tak něco. Ale stahnul sem si SDL_image devel VC8 ze stranek uvedenych v tutorialu. Přilinkoval sem co se dalo, jak v Tools - Options - Project and Solution - VC++ Directories ... tak v Project - Properties - Configuration Properties - Linker - General tak uz vazne nevim. I to SDL_image.h sem zkopiroval do složky include v adresari VC v Program Files. Kód sem sice dávam taky ale nevim jestli bude chyba tam.

C / C++ › SDL nekreslí
16. 9. 2008   #85261

Zdravím po ránu,

takže Wizard měl pravdu, bylo to přesně v tom. V tom tutoriálu ale chyba není takže nechápu jak se mi to tam dostalo kdyz sem to jen kopíroval. Možná už to opravili ale fakt nevim :( Každopádně díky.

Wizard napsal:
ono uz neni co rozoberat :) problem je na 100% v podmienke pri initalizacii SDL viz moj prispevok vysie

C / C++ › SDL nekreslí
15. 9. 2008   #85183

Jinak to tím nebylo, žadny okno ani neproblikne a vypis v kompilátoru je následující:

'2.exe': Loaded 'C:\DATA\C++\SDL\2\Debug\2.exe', Symbols loaded.
'2.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\SDL.dll', Binary was not built with debug information.
'2.exe': Loaded 'C:\WINDOWS\system32\winmm.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\user32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\gdi32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\secur32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll'
'2.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcr90d.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\ddraw.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\dciman32.dll'
'2.exe': Unloaded 'C:\WINDOWS\system32\ddraw.dll'
'2.exe': Unloaded 'C:\WINDOWS\system32\dciman32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\kbdus.dll'
'2.exe': Unloaded 'C:\WINDOWS\system32\kbdus.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\kbdcz.dll'
'2.exe': Unloaded 'C:\WINDOWS\system32\kbdcz.dll'
The program '[3236] 2.exe: Native' has exited with code 1 (0x1).



Radši sem ještě hážu kód, vim je to dlouhý ale co kdyby:

C / C++ › SDL nekreslí
15. 9. 2008   #85178

Tak na co tam je tohle

printf("Vytvoření okna se nezdařilo: %s\n", SDL_GetError());


exit(1);


Kdyz se to nikam nenapíše sakra :( ... Me štve to, že i kdyz člověk zkopíruje nějakej kód z učebnice, tak to nejde kvůli nějakejm jinejm kravinam. Linkování atd. uz sem jakž takž pochopil (stejně mě štve, že i kdyz prilinkuju vsechny knihovny a include soubory, tak do projektu musim dopsat tohle - #pragma comment (lib, "SDL.lib") #pragma comment (lib, "SDLmain.lib") jinak to zkrátka nefunguje).

Dneska uz na to kaslu protoze mam nervy v hajzlu, ale sem zvedavej jestli to takhle pujde dal, jak se naucim SDL. Vsude ctu jak je to jednoduchy, prehledny a skveli pro začatky v grafice, ale VC++ mi prijde samo o sobe ze to spis ztěžuje práci. Uz jen ten případ kterej sem popisoval nahoře. V Dev-C++ zkrátka co sem měl před sebou, to se kompilovalo. A tady ... ?

C / C++ › SDL nekreslí
15. 9. 2008   #85175

Hmmm takze sem prisel na par veci. Mam VC++ 9.0 a to je teda program. po zmačknutí F5 mi to spouštělo uplně něco jinyho než sem měl na obrazovce, zkratka to spouštělo předchozí projekt, takze cokoli sem menil v tom co sem delal porad to spoustelo to druhy, dost divna vlastnost teda, pak sem prisel na to ze se nejdriv musi dat "Rebuild" a pak teprve poustet debuger atd.

No a kdyz uz sem to teda vyresil a kdesi cosi, tak kdyz spustim tohle co sem sem pastnul, tak se mi pro zmenu neobjevi okno zadny, a debuger pise

The program '[2344] 2.exe: Native' has exited with code 1 (0x1).

. Podotykam ze chybu to tam nikde nepise zadnou. Predpokladam ze to skonci na nejakym tom exit (1) ale nevim na kterym, jelikoz sem nenasel kam se pise ten text z tech prikazu printf. Ja myslel ze to ma vytvorit nejaky chybovy textaky ne?? Boze proc nemuze neco fungovat normalne ..... :(

C / C++ › SDL nekreslí
15. 9. 2008   #85144

NO objevi se klasicky cerny SDL okno s titulkem Jednoducha ukazka 'inicializace' SDL grafiky a je to ... zkratka dela to vse krom toho vykreslovani :) BTW: to co sem tu uvadel jako prvni ... tak tam ta funkce byla taky v ty smycce ne ?

C / C++ › SDL nekreslí
15. 9. 2008   #85138

Dík,

tak pokud to dobře chápu, tak by konec kódu měl vypadat takto:

bool done=false;


while(done == false){

DrawScene(screen);


SDL_Event event;
while(SDL_PollEvent(&event) ) {
if(event.type == SDL_QUIT) done=true;

}
}
}


ale to stejne nejde. Ani kdyz to dam za to SDL_Event; :(

C / C++ › SDL nekreslí
15. 9. 2008   #85135

Zdravím,

tak dělám SDL podle seriálu zde a narazil sem na problém. Všechno mi jede, ukáže se černý okno, chybu to nepíše žádnou, ale kdyz zkopíruju zdroják z lekce 2 (vykreslování barevnejch pixelů v okně 800 x 600) tak je okno pořád černý.

Kdyz sem se učil SDL ze stránek root.cz, kde je v 5. lekci nahrání obrázku fukncí SDL_LoadImage() a taky sem jen zkopíroval jejich kód, taky se mi zobrazilo jen černé okno, s titulkem a tak, ale ten obrázek v něm nebyl zobrazenej. Zdá se mi, že je to ta samá chyba, nevíte někdo čím to?? Prosíím .... pro kontrolu přikládám kód:

Pepíno
PHP › problém se SESSION (platnost…
11. 9. 2008   #84890

To KIIV : Přesně tak, fintu s průhlednym obrázkem používam taky ;o). Na běžnýho uživatele to stačí :o)

Pepíno
PHP › problém se SESSION (platnost…
11. 9. 2008   #84889

To KIIV : To já právě taky :o). Každopádně díky ta info, vykašlu se na session, udělam si malou šifrovací funkci, cestu na obrázky odešlu do picture.php šifrovaně a mam po starostech :o)

Pepíno
PHP › problém se SESSION (platnost…
10. 9. 2008   #84836

To KIIV : Vždycky se najde způsob, jak se na ty obrázky dostat, cílem je, aby to nedělali masově běžní uživatelé. Výpis obrázků přes skripty typu picture.php je jeden ze způsobů ochrany, který používá spousta programátorů v php. Standartně se používá ve tvaru picture.php?id=cislo přičemž číslo se pak v picture.php přes databázi vymění za cestu, ale je to krok navíc, který se mi nelíbí, proto zkouším předávat cestu přes session.
Se session pracuju už dlouho, běžně jejich hodnoty měním při běhu skriptu a nikdy jsem s tím problém neměl. Máš na mysli, že by se hodnota session při volání dalšího skriptu (v tomto případě skriptu picture.php) měnila až po jeho skončení?

Pepíno
PHP › problém se SESSION (platnost…
10. 9. 2008   #84833

To KIIV : Jednodušší by to určitě bylo, ale když pošlu skriptu proměnnou, ve zdrojovém kódu na straně uživatele se zobrazí celá cesta na obrázek, kterou si pak může zadat do prohlížeče a stáhnout. Proto se to snažím obejít přes picture.php a session. Tomu, že se obsah session uloží do souboru po skončení session, ale moc nerozumím, měl jsem za to, že session je normální proměnná, která zůstává na straně serveru i po odeslání HTML uživateli a volá se přes pole $_SESSION. Pokud se řádky skriptu provádí postupně, čekal bych, že se provede naplnění session ( $_SESSION["obrazek"] = cesta_na_soubor), potom se zavolá soubor picture.php, který jí naplněnou použije a další řádek jí vyprázdní ($_SESSION["obrazek"] = "";). Pokud session funguje jinak, sem s každou informací, protože na netu jsem na tohle téma nic víc nenašel :o)

Pepíno
PHP › problém se SESSION (platnost…
10. 9. 2008   #84827

To KIIV : Má to vykreslit tabulku, která bude mít v některých buňkách obrázek A a v některých obrázek B (cestu na ně vrací funkce zobraz_obsah_pole, jejíž výstup je v pořádku). Když po zavolání picture.php session nevynuluju, vykreslí se mi do všech polí tabulky obrázek A (přestože do picture.php byla několikrát prokazatelně odeslána cesta na obrázek B) . Řekl jsem si, že zkusím session na konci každého kola cyklu radši vyprázdnit, ale když to udělám, stane se podivná věc - ani do jedné buňky tabulky se mi obrázek nezobrazí. Zkusil jsem přesunout vyprázdnění session přímo do skriptu picture.php (na konec) a zase se mi žádný obrázek nezobrazí a navíc když si na řádce za voláním picture.php vypíšu session, je pořád naplněná, což je dost zvláštní, každá session spuštěná přes session_start() by přece měla platit ve všech skriptech i funkcích.

Pepíno
PHP › problém se SESSION (platnost…
10. 9. 2008   #84813

Ahoj, narazil jsem na problém se session se kterým už si vážně nevím rady. Mám hlavní skript, který začíná session_start(). Do něj vložím na jednom místě přes require další skript ve kterém volám funkci obsahující tento cyklus pro vykreslení tabulky s obrázky:



for ($top_akt=$start; $top_akt < $strana; $top_akt++):
echo "<tr>";
for ($left_akt=$start; $left_akt < $strana; $left_akt++):
echo "<td>";
$_SESSION["obrazek"] = zobraz_obsah_pole(Substr($nalez['cislo'], 0, 1)); //získání cesty na obrázek, ověřeno výpisem přes echo, session je naplněna platnou cestou na obrázek
echo "<a href='karwak.php?stav=$stav&get[pozice_top]=$top_akt&get[pozice_left]=$left_akt'><img src='picture.php'></a>";
$_SESSION["obrazek"] = "";
echo "</td>";
endfor;
echo "</tr>";
endfor;


V cyklu se volá skript picture.php pro zobrazení obrázku do pole tabulky, cestu na obrázek předávám přes $SESSION["obrazek"]. Cesta před vstupem do picture.php je opravdu v příslušné session a je platná (prověřeno přes echo). V tabulce mají být dva druhy obrázků, cesta na ně se natahuje ve funkci zobraz_obsah_pole. Zkoušel jsem $_SESSION["obrazek"] v každém kole cyklu vyprázdnit, ale obrázky se pak přestanou zobrazovat úplně, zkoušením různých variant s vyprázděnín jsem zjistil toto:
- jakmile se session vynuluje mimo picture.php (jako v kódu výše), přestane se obrázek úplně zobrazovat (na žádném políčku není nic)
- když vynuluji session přímo v picture.php, na jeho konci, je po vypsání $_SESSION["obrazek"] za picture.php pořád naplněná
-když se session nevynuluje vůbec, vykresluje se na všechny políčka pořád jeden a ten samý obrázek bez ohledu na cestu, uloženou do session (k obrázkům jsem nechával přes echo vypisovat cesty na soubor a byly různé)

Tady je skript picture.php




<?php

session_start();

$obr_name = $_SESSION["obrazek"];

$im = imagecreatefromjpeg($obr_name);

header("Content-type: image/jpeg");

imagejpeg($im);

imagedestroy($im);

?>

C / C++ › PCRE - vypisuje chybu
11. 3. 2008   #68409

No vidííš to ... to mě právě vůbec nenapadlo že to jsou zdrojáky, hned sem moudřejší. Na to PCRE kašlu, udělam to jinak, i když to bude pracnější...

Hele díky moc za pomoc... a nevykej mi pořád, už sme tu spolu kecali dávno a me je 25 :)

C / C++ › PCRE - vypisuje chybu
11. 3. 2008   #68398

Hm tak to přilinkování krásně funguje, ale stejně to píše tu samou chybu:

1>Linking...
1>html.obj : error LNK2019: unresolved external symbol __imp__pcre_exec referenced in function _wmain
1>html.obj : error LNK2019: unresolved external symbol __imp__pcre_compile referenced in function _wmain
1>C:\DATA\C++\HTML_project\html\Debug\html.exe : fatal error LNK1120: 2 unresolved externals
1>Build log was saved at "file://c:\DATA\C++\HTML_project\html\html\Debug\BuildLog.htm"
1>html - 3 error(s), 0 warning(s)



Jestli to nebude tim že mam verzci toho PCRE 7.6 a ty libky jsou z verze 6.7 jak si psal :( Pak ale nechápu proč k tomu 7.6 taky nějaký .lib nedali teda když už jsou potřeba ! :( Kde ja to ted mam hledat .... aaaaach joooooooooo proč to programování je tak složitý :( Triviální prográmek a kvůli takovejmhle kravinám okolo už na tom dělam 3 dny

C / C++ › PCRE - vypisuje chybu
11. 3. 2008   #68394

Lidi v celý složce toho PCRE (v. 7.6) není ani jedna .lib knihovna. Tak co mam potom linkovat? :( aaaaach joooooo

C / C++ › PCRE - vypisuje chybu
11. 3. 2008   #68392

No tady se právě jedná o to, že vůbec nechápu co to linkování je, k čemu to je, co se linkuje atd. Chápu jen #include ... proto se vždycky děsim toho, že budu potřebovat nějakou externí knihovnu :(

Dělám ve Visual Studio 2008 express ... tak já to tam někde přilinkuju, zkusím a uvidím no ...

díííky moc lidičky

C / C++ › PCRE - vypisuje chybu
10. 3. 2008   #68308

Zdravím lidičky, chtě nechtě si musím jít zase pro radu (i když mě to dost štve) protože se s tím pářu zase 2 hodiny a mam chuť rozkopat počítač :(

Tady mam kód, dle mě bez chyb (i sem si našel jak převíst string do const char * jak to chce PCRE do tý funkce):

#include "stdafx.h"

#include "stdio.h"
#include <string>
#include <iostream>
#include <fstream>

#include "pcre/pcre.h"

#define vyraz "+Marek+"
#define VEC_SIZE 30

using namespace std;

string ch;
char z;
pcre* re_handle;
const char* err;
int err_offset;
int ovector[VEC_SIZE];

const char *ptr1 = 0;



int _tmain(int argc, _TCHAR* argv[])
{

fstream pokus("pokus.txt");

while(pokus.good())
{
pokus.get(z);
ch+=z;


//kompilacia vyrazu
re_handle = pcre_compile(vyraz, 0, &err, &err_offset, NULL );
if (!re_handle) {
printf("ERROR: %s", err);
return 0;
}
ptr1 = ch.data ( );

//vyhodnotenie vyrazu
int res = pcre_exec(re_handle, NULL, ptr1, strlen(ptr1), 0, 0, ovector, VEC_SIZE);

if(res<0)
{
cout<<"Test";
}

}

pokus.close();
cout<<ch<<endl;

system("PAUSE");
return 0;
}


Jenže to hlásí tuhle chybu:

1>Linking...
1>html.obj : error LNK2019: unresolved external symbol __imp__pcre_exec referenced in function _wmain
1>html.obj : error LNK2019: unresolved external symbol __imp__pcre_compile referenced in function _wmain
1>C:\DATA\C++\HTML_project\html\Debug\html.exe : fatal error LNK1120: 2 unresolved externals
1>Build log was saved at "file://c:\DATA\C++\HTML_project\html\html\Debug\BuildLog.htm"
1>html - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========



Mohl by mi někdo vysvětlit o co přesně jde, jak to zpravit a jakym postupem bych příště mohl přijít na to co s tím, abych sem nemusel psát a zatěžovat vás takoejhlema kravinamal??

Děkuju

PHP › čeština ve funkci mail()
13. 2. 2008   #65822

díky moc za pomoc .... ted musím z práce domů a pak jedu do neděle pryč, tak to vyzkouším v pondělí ...

jste zlatý lidičky že ztrácíte čas se začátečníkama jako jsem já :)

PHP › čeština ve funkci mail()
13. 2. 2008   #65806

Hele ještě k tomu PHP inject (nebo jak se to nazývá) :)

Ja mam ve skriptech třeba že odkaz je index.php?x=1

a ve skriptu:

if(x==1)
{ include("kontakty.html") ; }

fungovalo by to hackovani i na tohle?

PHP › čeština ve funkci mail()
13. 2. 2008   #65794

Dík za rady, já v tom teda ještě nejsem až tak zběhlej :) ....... a co mam teda používat místo toho $_POST

O těch uvozovkách - už sem si toho všim taky :)

PHP › čeština ve funkci mail()
13. 2. 2008   #65792

Tak jsem to překopal na tohle:

<?  

$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-2\n";
$headers .= "X-Priority: 3\n";
$headers .= "X-MSMail-Priority: Normal\n";
$headers .= "X-Mailer: php\n";
$headers .= "Subject: $predmet\n";


$zprava="Ahoj,\npojď si s námi zahrát výbornou online hru. Nepotřebuješ nic instalovat ani stahovat. Funguje to pouze v prohlízeči. Poté, budes li chtít, tam klikni na Registraci a zaregistruj se.\n\nTuto zprávu ti zaslal: ".$_POST[podpis]."\nmozno odpovědět na: ".$_POST[email];


$predmet="Vyborna on-line hra zkus to !";


$email=mail("xxxx@seznam.cz,".$_POST[mail1].",".$_POST[mail2].",".$_POST[mail3].",".$_POST[mail4], $predmet, $zprava, $headers);

if($email)
{
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<meta http-equiv="Content-Language" content="cs">
<meta http-equiv="Content-Type" content="text/html; iso-8859-2">
<meta name="description" content="online hry, hry zdarma, hry">
<title>Zpráva</title>
</head>

<body>
<script>
window.location.href='http://www.xxxx.wz.cz/pokus/index.php?x=5'
</script>
</body>
</html>
<?
}

?>


A stejně to nejde :( ....... tohle je komplet celej kód toho souboru mail.php kterej mi odesílá ty mejly.

PHP › čeština ve funkci mail()
13. 2. 2008   #65789

Tak sem všechno windows-1250 přepsal na iso-8859-2 a dělá to taky. Místo "Nebudeš" je tam "Nebude" :(

PHP › čeština ve funkci mail()
13. 2. 2008   #65788

No všude sem tam nacpal Windows-1250 tak by to v tom mělo být. Jinak myslím že to iso sem zkoušel taky, ale to nešlo taky. I když ještě to zkusím.

jinak tu chybu mi to zobrazuje na emailu seznamu, když si to prohlížím přes mozzilu (netaham ten mejl outlookem). Možná by mohl bejt problém na straně seznamu.cz?? I když to asi ne ...

PHP › čeština ve funkci mail()
13. 2. 2008   #65777

Zdravím lidi, jdu si opět pro radu. Funkcí mail posílám určitou zprávu na mejly (ne nejedná se o spam, nebojte).

Mam tam problém s češtinou. V tý zprávě normálně fungují znaky jako ě, í , é, ... ale jakmile je tam š nebo ž , tak tam prostě není, tím myslím jako že zmizí. místo "budeš" tam je "bude" ...

Zkoušel sem všechno možné nastavování kódování, pro jistotu sem dávám celej kód, ale stále nic nefunguje :( Poradíte? Díky ...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html><head>
<meta http-equiv="Content-Language" content="cs">
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1250">
<meta name="description" content="online hry">
<title>Zpráva</title>
</head>

<?
"MIME-Version: 1.0\n".
"Content-Type: text/plain; charset=\"windows-1250\"\n".
"Content-Transfer-Encoding: base64";

$zprava="Ahoj,\npojď si s námi zahrát výbornou online hru. Nepotřebuješ nic instalovat ani stahovat. \n\nTuto zprávu ti zaslal: ".$_POST[podpis]."\nmozno odpovědět na: ".$_POST[email];


$predmet="Vyborna on-line hra, zkus to !";

$hlavicka .= "From: TJ".
"MIME-Version: 1.0\n".
"Content-Type: text/plain; charset=\"windows-1250\"\n".
"Content-Transfer-Encoding: base64";

$email=mail("xxxx@seznam.cz,".$_POST[mail1].",".$_POST[mail2].",".$_POST[mail3].",".$_POST[mail4], "$predmet", "$zprava");


Trošku sem to ořezal ale tohle by jako ukázka mělo stačit. Díky ...

C / C++ › Winapy - strcpy
28. 1. 2008   #64288

neubírá no :)

tak díky moc ...

C / C++ › Winapy - strcpy
28. 1. 2008   #64285

Hej známý firmy, Zelenáš, Jura, a spol. :) Kucí zlatý chyběli ste mi :)

Tak už to jede ... mam to takhle:

void VlastniKresleni(WPARAM wParam, LPARAM lParam)

{
POINTS ptCursor;
HDC hdc;
TCHAR chText[30];
ptCursor = MAKEPOINTS(lParam);
lstrcpy(chText, TEXT("ahoj"));

// _stprintf(chText, "x=%d, y=%d", ptCursor.x, ptCursor.y);
hdc = GetDC(g_hwndMain);
if ( wParam & MK_CONTROL )
SetTextColor(hdc, 0x000000FF);
TextOut(hdc, ptCursor.x, ptCursor.y, chText, lstrlen(chText));
ReleaseDC(g_hwndMain, hdc);
}


Sice to funguje i skončí bez problému ale stejně to píše tohle (v informačním okně visual C++):

Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\user32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\gdi32.dll', no matching symbolic information found.
The thread 0xEAC has exited with code 0 (0x0).
The program 'C:\DATA\C++\Win32\1\Debug\1.exe' has exited with code 0 (0x0).

C / C++ › Winapy - strcpy
28. 1. 2008   #64277

Zdravím lidi, jsem tu zas po dlouhý době (možná už si mě nepamatujete :) ) Rozhodnul sem se začít učit něco ve winapi a abych pořád něco bezhlavě neopisoval, občas to nějak sám pozměnit, ale moc to nejde.

Chci se zeptat proč to nejde takhle, hlásí to nějaký divný chyby

void VlastniKresleni(WPARAM wParam, LPARAM lParam)

{
POINTS ptCursor;
HDC hdc;
TCHAR chText[30];
ptCursor = MAKEPOINTS(lParam);
strcpy("ahoj", chText);

// _stprintf(chText, "x=%d, y=%d", ptCursor.x, ptCursor.y);
hdc = GetDC(g_hwndMain);
if ( wParam & MK_CONTROL )
SetTextColor(hdc, 0x000000FF);
TextOut(hdc, ptCursor.x, ptCursor.y, chText, lstrlen(chText));
ReleaseDC(g_hwndMain, hdc);
}


To strcpy sem tam dal já (nejde ani lstrcpy) a to // _stprintf(chText, "x=%d, y=%d", ptCursor.x, ptCursor.y); je správně.

Vše potřebný includovaný mam (stdio, tchar.h, a tak). Takže v tom to nebude, ale já v tomhle co sem udělal chybu nevidím :( Hold sem ještě nezkušenej.

PS: Je to samozřejmě jen část programu, spíš jen jedna funkce z něj. Ale o ten zbytek kódu nejde.

Takže díky za rady a ponaučení

 

 

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