Dobry den, v programe mam riadok:
screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
Prekladac mi vyhodi chybu: "[Error] 'SDL_HWSURFACE' was not declared in this scope", vedel by niekto poradit co s tym ? Dakujem.
Příspěvky odeslané z IP adresy 195.168.209.–
#17 LukoSS
To je pravda len mne na tom nesedí to, že to "Make picture" je vidno viackrát a navyše na pravej strane ich je viac ako v tom ľavom obrázku (možno je to len orezané na fixný počet riadkov) takže pokiaľ mu tie volania MakePicture dokončili predtým úspešne a obrázky videl (ak tie predtým vytvorilo) tak by to mohlo zlyhať práve na súbore. Nenapísal však či mu tie predchádzajúce MakePicture aj nejaké obrázky vytvorilo alebo mu tá funkcia "nefunguje" vôbec. (Funkcia funguje, tiež som to odskúšal a ide to bez problémov)
Skontroluj:
- či sa ten kód vôbec zavolá
- či je cesta k obrázku správna
- či nenastavuješ pozíciu obrázku mimo plochu formulára
- či kód zbehne až k tomuto riadku: UO.Print("Make Picture");
Tento kód:
this.PicBox.BringToFront();
by si ale v každom prípade mal mať pred riadkom UO.Print("Make Picture"); pretože pokiaľ by si mal na tom mieste napr. Panel, obrázok by sa vytvoril ale pod tým panelom, čiže by si ho ani nevidel.
Ako často voláš tú funkciu MakePicture ?
Zdravím,
potreboval by som súrne poradiť ohľadom bezpečnosti v MySQL. Pracujem na klientovi, ktorí sa spája so vzdialeným MySQL serverom. Dilema, ktorú potrebujem vyriešiť (objasniť), sa skladá z týchto dvoch problémov:
[seznam]1. Ako čo najlepšie zabezpečiť, aby sa k databáze dostal len ten človek, ktorý má na to právo a dokáže sa overiť (samozrejme prihlasovacie údaje a minimálne doména, z ktorej môže pristúpiť)
2. SSL, je možné dosiahnuť bezpečnosť tak, aby MySQL prijala iba užívateľa so špecifickým certifikátom[/seznam]
Máte s používaním zabezpečeného MySQL skúsenosti? Prioritou je aby sa na databázu nemohol pripojiť nikto iný než ten, komu to dovolím.
Vopred ďakujem.
Zdravím,
mám taký problém pri otváraní spojenia s webkou.
Pomocou SetupApi funkcí som si zistil cestu interface cestu k svojej webke: \\?\usb#vid_03f0&pid_5d11&mi_00#6&aad3e6&0&0000#{6bdd1fc6-810f-11d0-bec7-08002be2092f}
Podľa dokumentácie na MSDN som predpokladal, že ak použijem túto cestu vo funkcii CreateFile, tak sa mi podarí komunikovať s tou webkamerou. Avšak pri použití:
CreateFileA(detInfo->DevicePath,GENERIC_READ,FILE_SHARE_READ,0,CREATE_ALWAYS,FILE_FLAG_OVERLAPPED,0);
vznikne chyba "2": ERROR_FILE_NOT_FOUND
Kde je chyba?
asi naozaj budes fakt jeden z mala ludi co asm rozumie :-) lebo ja stale, ked si uz myslim ze to mam, tak stale najdem nieco nove, co by tam nemalo byt. presne ako teraz, nech robim co robim, furt sa mi zda, ze to tam pocita aj veci co nema, tak uz fakt neviem. uz mam z toho hlavu ako slon a niekedy rozmyslam nad tym, ci nehodim notebook o zem :-)) ale to by asi tomu moc nepomohlo, vsak? :-))))))))))))
Zdravim, mam problem s jednym programom, nevie niekto pomoct?
Zadanie: Načítajte z klávesnice reťazec znakov ukončený znakom konca riadku. Slová vo vstupe sú oddelené najmenej jedným znakom medzera. Uvažujte aj prvé, resp. posledné slovo vstupu. Určte počet slov, v ktorých je počet výskytov veľkých písmen dvojnásobkom počtu výskytov malých písmen. Počet vytlačte šestnástkovo.
Su v tom nejake chyby, na vystupe tam zapocivava aj veci ktore nema, napriklad medzery.
; ############################################################
; ##### ZADANIE c.XXX (c) --= Xxxxxxx Xxxxx =-- 2oo9 #####
; ############################################################
; --------------------------------------------------------------------------------------------
.model small
.stack 100h
; --------------------------------------------------------------------------------------------
; --------------------------------------------------------------------------------------------
; ### data ###
.data
str1 DB "Zadaj retazec: ",‘$‘
str2 DB "Pocet vyhovujucich slov je ",‘$‘
str3 DB "(c) --= Xxxxxxx Xxxxx =-- 2oo3",‘$‘
str4 DB "Zadanie c.XXX - Assembler",‘$‘
buffer DB 201 dup(200)
; --------------------------------------------------------------------------------------------
; --------------------------------------------------------------------------------------------
; ### code ###
.code
; --------------------------------------------------------------------------------------------
; ### procedury ###
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ## getStr
; # - nacita retazec z klavesnice ukonceny znakom '\n' a ulozi ho do buffera
; -----------------
getStr proc near
mov ah,01h ; vstup z klavesnice
getLoop: int 21h
cmp al,0dh ; testujeme koncovy znak (\n)
je getEnd ; ak bol, tak koniec nacitavania
mov [bx],al ; inak ulozime znak do buffera
inc bx ; BX nastavime na dalsi znak
jmp getLoop ; nacitaj dalsi znak
getEnd: mov byte ptr [bx],‘$‘ ; CR skonvertujem na '$'
ret
getStr endp
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ## putStr
; # - vypise retazec na ktory ukazuje BX a je ukonceny znakom '0'
; -----------------
putStr proc near
mov ah,2h ; zobraz znak
nextChar: cmp byte ptr [bx],‘$‘ ; testujeme koncovy znak
je foundEnd ; ak bol, tak koniec
mov dl,[bx] ; inak ho vypiseme
int 21h
inc bx ; BX nastavime na dalsi znak
jmp nextChar ; vypis dalsieho znaku
foundEnd: ret
putStr endp
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ## newLine
; # - vypise znak CR a LF (odriadkuje)
; -----------------
newLine proc near
mov ah,02h ; zobraz znak
mov dl,0dh ; CR
int 21h
mov dl,0ah ; LF
int 21h
ret
newLine endp
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ## testChar
; # - zisti ci je znak [bx] male/velke pismeno, obsluzi pocitadla znakov
; # CL = pocet malych pismen, CH = pocet velkych pismen
; -----------------
testChar proc near
; +++++++++ rozoznavanie malych/velkych pismen +++++++++
cmp byte ptr [bx],'A' ; kontrolujeme velke pismeno-dolna hranica
jl Tend ; <'A' (nebude to pismeno)
cmp byte ptr [bx],'Z' ; kontrolujeme velke pismeno-horna hranica
jle Tinc1 ; <='Z' (je to velke pismeno)
cmp byte ptr [bx],'a' ; kontrolujeme male pismeno- dolna hranica
jl Tend ; <'a' (nebude to male pismeno)
cmp byte ptr [bx],'z' ; kontrolujeme male pismeno- horna hranica
jle Tinc2 ; <='z' (je to male pismeno)
jmp tend ; >'Z' (nieje to male pismeno)
; +++++++++ pocitanie malych/velkych +++++++++
Tinc1: inc ch ; velke pismeno
jmp tend
Tinc2: inc cl ; male pismeno
jmp tend
Tend: ret
testChar endp
; --------------------------------------------------------------------------------------------
; --------------------------------------------------------------------------------------------
; ### source ###
start:
mov ax,@DATA
mov ds,ax
mov bx,offset str4 ; nazov programu
call putStr
call newLine
call newLine
; +++++++++ vstup od pouzivatela +++++++++
mov bx,offset str1 ; vyzva na zadanie retazca
call putStr
mov bx,offset buffer ; nacitame retazec do 'buffer'
call getStr
call newLine ; odriadkujem
; +++++++++ analyza zadanych udajov +++++++++
mov bx,offset buffer ; prvy znak
mov cx,0 ; znulujeme pocitadla znakov
mov dx,0
push dx ; odlozime DX (pocitadlo vyhovujucich slov)
nextCh: cmp byte ptr [bx],‘$‘ ; testujeme koncovy znak
je space ; ak bol, tak kontrola posledneho slova a koniec
cmp byte ptr [bx],' ' ; testujeme medzeru = zaciatok/koniec slova
je space
call testChar
inc bx ; dalsi znak
jmp nextCh
; +++++++++ zaciatok/koniec slova +++++++++
space: sub ch,cl ; (pocet velkych) - 2*(pocet malych)
sub ch,cl ; ak vyhovuje, vysledok je 0 (CX=0)
cmp ch,0 ; testujeme ci je spravny pocet malych/velkych
jne clWend ; ak nie, tak skok
pop dx ; obnovime pocitadlo spravnych slov
inc dx ; aktualne slovo vyhovovalo
push dx ; odlozime spat
clWend: cmp byte ptr [bx],'$' ; testujeme koncovy znak
je finish ; ak bol, tak konec analyzy slov
mov cx,0 ; znulujeme pocitadlo znakov
inc bx ; dalsi znak
jmp nextCh
; +++++++++ vypisanie vysledku v sestnastkovej sustave +++++++++
finish: mov bx,offset str2 ; vypis o vysledkoch
call putStr
pop dx ; obnovime DX (pocitadlo vyhovujucich slov)
mov dh,dl ; do DH odlozime pocitadlo (DL potrebujeme na vystup)
rol dl,2 ; najvyssi rad
and dl,00000011b
add dl,30h ; prevedieme na ASCII kod
int 21h
mov dl,dh ; stredny rad
ror dl,3
and dl,00000111b
add dl,30h ; prevedieme na ASCII kod
int 21h
mov dl,dh ; najnizsi rad
and dl,00000111b
add dl,30h ; prevedieme na ASCII kod
int 21h
; +++++++++ copyright a koniec programu +++++++++
call newLine
call newLine
mov bx,offset str3 ; vypis copyrightu
call putStr
mov ax,4c00h ; ukoncenie programu (0=koniec bez chyby)
int 21h
end start
; --------------------------------------------------------------------------------------------
To o-lox : Joj, chlapi. To je hrozne s vami, nepomozete a nepomoze :))
To o-lox : ahoj o-lox. no presne tak nejak som to robila aj ja, neviem ci som uz blba alebo co, ale furt to nejde. Joj. :smile10:
no vidis...sama neviem ako je to mozne...aj ked sa priznam ze mi s tym trosku pomahal kamarat...no na toto sme vtedy zabudli...
no ja neviem ci som blba, alebo to je tym ze som blondina :)) ale mne to stale nejak nejde...neskusis mi to napisat cely program ako to ma byt? :))
Nevie niekto ako by som zmenila tento program...stale mi to vypisuje vysledok osmickovo...ale potrebujem aby to bolo sestnastkovo...neviete to niekto zmenit?
.model small
.stack 100h
; -----------------------------------------------------------------------------------------------
; -----------------------------------------------------------------------------------------------
; ### data ###
.data
str1 DB "Zadaj retazec: ",'$'
str2 DB "Pocet vyhovujucich slov je ",'$'
str3 DB "(c) --= XXXXXXXXX =-- 2oo9",'$'
str4 DB "Zadanie c.308 - Strojovo orientovane jazyky",'$'
buffer DB 201 dup(200)
; -----------------------------------------------------------------------------------------------
; -----------------------------------------------------------------------------------------------
; ### code ###
.code
; -----------------------------------------------------------------------------------------------
; ### procedury ###
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ## getStr
; # - nacita retazec z klavesnice ukonceny znakom '\n' a ulozi ho do buffera
; -----------------
getStr proc near
mov ah,01h ; vstup z klavesnice
getLoop: int 21h
cmp al,0dh ; testujeme koncovy znak (\n)
je getEnd ; ak bol, tak koniec nacitavania
mov [bx],al ; inak ulozime znak do buffera
inc bx ; BX nastavime na dalsi znak
jmp getLoop ; nacitaj dalsi znak
getEnd: mov byte ptr [bx],'$' ; CR skonvertujem na '$'
ret
getStr endp
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ## putStr
; # - vypise retazec na ktory ukazuje BX a je ukonceny znakom '$'
; -----------------
putStr proc near
mov ah,2h ; zobraz znak
nextChar: cmp byte ptr [bx],'$' ; testujeme koncovy znak
je foundEnd ; ak bol, tak koniec
mov dl,[bx] ; inak ho vypiseme
int 21h
inc bx ; BX nastavime na dalsi znak
jmp nextChar ; vypis dalsieho znaku
foundEnd: ret
putStr endp
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ## newLine
; # - vypise znak CR a LF (odriadkuje)
; -----------------
newLine proc near
mov ah,02h ; zobraz znak
mov dl,0dh ; CR
int 21h
mov dl,0ah ; LF
int 21h
ret
newLine endp
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; ## testChar
; # - zisti ci je znak [bx] male/velke pismeno, obsluzi pocitadla znakov
; # CL = pocet malych pismen, CH = pocet velkych pismen
; -----------------
testChar proc near
; +++++++++ rozoznavanie malych/velkych pismen +++++++++
cmp byte ptr [bx],'A' ; kontrolujeme velke pismeno - dolna hranica
jl Tend ; <'A' (nebude to pismeno)
cmp byte ptr [bx],'Z' ; kontrolujeme velke pismeno - horna hranica
jle Tinc1 ; <='Z' (je to velke pismeno)
cmp byte ptr [bx],'a' ; kontrolujeme male pismeno - dolna hranica
jl Tend ; <'a' (nebude to male pismeno)
cmp byte ptr [bx],'z' ; kontrolujeme male pismeno - horna hranica
jle Tinc2 ; <='z' (je to male pismeno)
jmp tend ; >'Z' (nieje to male pismeno)
; +++++++++ pocitanie malych/velkych +++++++++
Tinc1: inc ch ; velke pismeno
jmp tend
Tinc2: inc cl ; male pismeno
jmp tend
Tend: ret
testChar endp
; -----------------------------------------------------------------------------------------------
; -----------------------------------------------------------------------------------------------
; ### source ###
start:
mov ax,@DATA
mov ds,ax
mov bx,offset str4 ; nazov programu
call putStr
call newLine
call newLine
; +++++++++ vstup od pouzivatela +++++++++
mov bx,offset str1 ; vyzva na zadanie retazca
call putStr
mov bx,offset buffer ; nacitame retazec do 'buffer'
call getStr
call newLine ; odriadkujem
; +++++++++ analyza zadanych udajov +++++++++
mov bx,offset buffer ; prvy znak
mov cx,0 ; znulujeme pocitadla znakov
mov dx,0
push dx ; odlozime DX (pocitadlo vyhovujucich slov)
nextCh: cmp byte ptr [bx],'$' ; testujeme koncovy znak
je space ; ak bol, tak kontrola posledneho slova a koniec
cmp byte ptr [bx],' ' ; testujeme medzeru = zaciatok/koniec slova
je space
call testChar
inc bx ; dalsi znak
jmp nextCh
; +++++++++ zaciatok/koniec slova +++++++++
space: sub cl,ch ; (pocet malych) - 2*(pocet velkych)
sub cl,ch ; ak vyhovuje, vysledok je 0 (CX=0)
cmp cl,0 ; testujeme ci je spravny pocet malych/velkych
jne chWend ; ak nie, tak skok
pop dx ; obnovime pocitadlo spravnych slov
inc dx ; aktualne slovo vyhovovalo
push dx ; odlozime spat
chWend: cmp byte ptr [bx],'$' ; testujeme koncovy znak
je finish ; ak bol, tak konec analyzy slov
mov cx,0 ; znulujeme pocitadlo znakov
inc bx ; dalsi znak
jmp nextCh
; +++++++++ vypisanie vysledku v osmickovej sustave +++++++++
finish: mov bx,offset str2 ; vypis o vysledkoch
call putStr
pop dx ; obnovime DX (pocitadlo vyhovujucich slov)
mov dh,dl ; do DH odlozime pocitadlo (DL potrebujeme na vystup)
rol dl,2 ; najvyssi rad
and dl,00000011b
add dl,30h ; prevedieme na ASCII kod
int 21h
mov dl,dh ; stredny rad
ror dl,3
and dl,00000111b
add dl,30h ; prevedieme na ASCII kod
int 21h
mov dl,dh ; najnizsi rad
and dl,00000111b
add dl,30h ; prevedieme na ASCII kod
int 21h
; +++++++++ copyright a koniec programu +++++++++
call newLine
call newLine
mov bx,offset str3 ; vypis copyrightu
call putStr
mov ax,4c00h ; ukoncenie programu (0=koniec bez chyby)
int 21h
end start
; -----------------------------------------------------------------------------------------------
zadanie je taketo...
Zostavte program pre evidenciu študentov. O každom študentovi sa budú
evidovať tieto údaje: meno, priezvisko, ročník, odbor, evidenčné číslo.
Program má umožniť pridanie študenta, odstránenie študenta, usporiadanie
podľa priezviska a vyhľadanie podľa evidenčného čísla.
Na reprezentáciu zoznamu študentov použite statické pole smerníkov a
jednotlivé položky záznamu nech majú dynamickú veľkosť. Záznamy
reprezentujte štruktúrami a zoznam nech je uložený v súbore. Použite
vlastné funkcie s parametrami.
....a vsetko ide ako ma, len to hladanie tam neviem do toho nejak dat :(
jasne ze tu neni...lebo som to dala prec, furt mi to neslo...nevies mi to spravit? ze by si to dorobil do toho?
Potrebujem poradit, ako do tohoto programu dorobim funkciu na vyhladanie podla evidencneho cisla...nevie to niekto nahodou? Mne to stale nejak nechce ist.
#include "stdio.h"
#include "malloc.h"
#include "string.h"
#define MAX_LENGTH 100
#define COUNT_ITEM 50
struct PARAM
{
char *Meno;
char *Priezvisko;
char *Rocnik;
char *Odbor;
char *Cislo;
};
struct PARAM *g_Param[COUNT_ITEM];
FILE *g_file;
void Vypis( int PocetZ )
{
int i;
for( i = 0; i < PocetZ; i++ )
{
printf( "[%d] %s\t %s\t\t %s %s %s\n", i,
g_Param[i]->Priezvisko,
g_Param[i]->Meno,
g_Param[i]->Rocnik,
g_Param[i]->Odbor,
g_Param[i]->Cislo);
}
}
void FreeMem( int UvolniP )
{
free( g_Param[UvolniP ]->Meno );
free( g_Param[UvolniP ]->Priezvisko );
free( g_Param[UvolniP ]->Rocnik );
free( g_Param[UvolniP ]->Odbor );
free( g_Param[UvolniP ]->Cislo );
free( g_Param[UvolniP ]);
}
void Pridaj( int *pPocetZ )
{
if( *pPocetZ < COUNT_ITEM )
{
g_Param[*pPocetZ] = (struct PARAM *) malloc(sizeof(struct PARAM));
g_Param[*pPocetZ]->Meno = (char*) malloc(MAX_LENGTH);
printf( "Zadaj meno : ");
scanf( "%s", g_Param[*pPocetZ]->Meno );
g_Param[*pPocetZ]->Priezvisko = (char*) malloc(MAX_LENGTH);
printf( "\nZadaj priezvisko : ");
scanf( "%s", g_Param[*pPocetZ]->Priezvisko );
g_Param[*pPocetZ]->Rocnik = (char*) malloc(MAX_LENGTH);
printf( "\nZadaj aktualny rocnik : ");
scanf( "%s", g_Param[*pPocetZ]->Rocnik );
g_Param[*pPocetZ]->Odbor = (char*) malloc(MAX_LENGTH);
printf( "\nZadaj studijny odbor : ");
scanf( "%s", g_Param[*pPocetZ]->Odbor );
g_Param[*pPocetZ]->Cislo = (char*) malloc(MAX_LENGTH);
printf( "\nZadaj evidencne cislo : ");
scanf( "%s", g_Param[*pPocetZ]->Cislo );
(*pPocetZ)++;
}
else
{
printf( "Zoznam je plny" );
}
}
void Zmaz(int *pPocetZ)
{
int i;
int UvolniP ;
Vypis( *pPocetZ );
if( *pPocetZ != 0 )
{
printf( "Zadaj cislo zaznamu ktory chces zmazat : " );
scanf( "%d", &UvolniP );
for( i = UvolniP ; i < ((*pPocetZ)-1); i++ )
{
strcpy( g_Param[i]->Meno,g_Param[i+1]->Meno);
strcpy( g_Param[i]->Priezvisko,g_Param[i+1]->Priezvisko);
strcpy( g_Param[i]->Rocnik,g_Param[i+1]->Rocnik);
strcpy( g_Param[i]->Odbor,g_Param[i+1]->Odbor);
strcpy( g_Param[i]->Cislo,g_Param[i+1]->Cislo);
}
if ((*pPocetZ)-1==0)
{
FreeMem( 0 );
}
else
{
FreeMem( (*pPocetZ)-1 );
}
(*pPocetZ)--;
}
else
{
printf( "!!! Prazdny zoznam !!!\n" );
}
}
void Zotried(int PocetZ)
{
int i;
int j;
struct PARAM *helpParam;
for( i = 0; i < PocetZ-1; i++)
{
for( j = i+1; j < PocetZ; j++ )
{
if( strcmp( g_Param[j]->Priezvisko, g_Param[i]->Priezvisko ) < 0 )
{
helpParam = g_Param[j];
g_Param[j] = g_Param[i];
g_Param[i] = helpParam;
}
}
}
}
void Nacitaj( int *pPocetZ )
{
int nRet;
int i;
for( i = 0; i < *pPocetZ; i++ )
{
FreeMem( i );
}
*pPocetZ = 0;
g_file = fopen( "zoznam studentov.dat", "r" );
do
{
if( *pPocetZ < COUNT_ITEM )
{
g_Param[*pPocetZ] = (struct PARAM *) malloc(sizeof(struct PARAM));
g_Param[*pPocetZ]->Meno = (char*) malloc(MAX_LENGTH);
g_Param[*pPocetZ]->Priezvisko = (char*) malloc(MAX_LENGTH);
g_Param[*pPocetZ]->Rocnik = (char*) malloc(MAX_LENGTH);
g_Param[*pPocetZ]->Odbor = (char*) malloc(MAX_LENGTH);
g_Param[*pPocetZ]->Cislo = (char*) malloc(MAX_LENGTH);
nRet = fscanf( g_file, "%s\t%s\t%s\t%s\t%s\n",
g_Param[*pPocetZ]->Meno,
g_Param[*pPocetZ]->Priezvisko,
g_Param[*pPocetZ]->Rocnik,
g_Param[*pPocetZ]->Odbor,
g_Param[*pPocetZ]->Cislo);
if( nRet != EOF )
{
(*pPocetZ)++;
}
else
{
FreeMem( *pPocetZ );
// (*pPocetZ)--;
}
}
else
{
printf( "Zoznam je plny" );
break;
}
}while( nRet != EOF );
fclose( g_file );
}
void Uloz( int PocetZ )
{
int i;
g_file = fopen( "zoznam studentov.dat", "w" );
if( g_file == NULL )
{
printf("nemozem zapisat");
}
else
{
for( i = 0; i < PocetZ; i++ )
{
fprintf( g_file, "%s\t%s\t%s\t%s\t%s\n",
g_Param[i]->Meno,
g_Param[i]->Priezvisko,
g_Param[i]->Rocnik,
g_Param[i]->Odbor,
g_Param[i]->Cislo);
}
fclose( g_file );
}
}
void main()
{
char CisloO;
int PocetZ;
int i;
PocetZ = 0;
do
{
printf( "\n******************* MENU *******************\n\n" );
printf( "\t[1]. \tPridanie studenta\n");
printf( "\t[2]. \tOdstranenie studenta\n");
printf( "\t[3]. \tUsporiadanie podla priezviska\n");
printf( "\t[4]. \tHladanie podla evidencneho cisla\n");
printf( "\t[5]. \tVypis studentov\n" );
printf( "\t[6]. \tUlozenie do suboru\n");
printf( "\t[7]. \tNacitanie zo suboru\n");
printf( "\t[8]. \tUkoncenie programu\n" );
printf( "\n******************* MENU *******************\n" );
printf( "\nZadaj volbu : " );
scanf( "%s", &CisloO );
printf( "\n" );
switch( CisloO )
{
case '1': Pridaj( &PocetZ );
break;
case '2': Zmaz( &PocetZ );
break;
case '3': Zotried( PocetZ);
break;
case '4': Hladaj( PocetZ );
break;
case '5': Vypis( PocetZ );
break;
case '6': Uloz( PocetZ );
break;
case '7': Nacitaj( &PocetZ );
break;
}
}while( CisloO != '8' );
for( i = 0; i < PocetZ; i++ )
{
FreeMem( i );
}
}
Nazdar. Nevie niekto náhodou spraviť toto zadanie na i8080? Alebo nemá ho niekto?
Načítajte z klávesnice reťazec znakov ukončený znakom „nového riadku“. Slová vo vstupe sú oddelené najmenej jedným znakom „medzera“. Uvažujte aj prvé, resp. posledné slovo vstupu. Určte počet slov reprezentujúcich zápis osmičkového čísla (začína znakom 0, napr. 015) podľa syntaxu jazyka C. Počet (0-255)vytlačte osmičkovo.
Môžeme sa dohodnúť aj na nejakej finančnej odmene, ak to má niekto spravené už, ale by to chcel urobiť, ak sa nudí :)
To KIIV : teda skor takto
$query="SELECT * FROM kniha_navstev order by datum DESC limit $pociatok, $limit";
$result=mysql_query($query, $link) or die ("Spojenie s databázou bolo neúspešné");
$num=mysql_num_rows($result);
$ctrl = $_GET['ctrl'];
$strana = $_GET['strana'];
$limit=5;
$celkovy_pocet=$num;
$pocet_stran=ceil($celkovy_pocet/$limit);
$pociatok=($strana*$limit)-$limit;
if ($ctrl1<>1)
{
$strana=1;
}//endif
To KIIV : doplnil som ale stale pise ze bolo neuspesne, nieco sa mu nepozdava stale
$query="SELECT * FROM kniha_navstev order by datum DESC limit $pociatok, $limit";
$result=mysql_query($query, $link) or die ("Spojenie s databázou bolo neúspešné");
$num=mysql_num_rows($result);
//$ctrl je pomocná premenná
$ctrl = $_GET['ctrl'];
$strana = $_GET['strana'];
if ($ctrl1<>1)
{
$strana=1;
}//endif
$limit=5;
$celkovy_pocet=$num;
$pocet_stran=ceil($celkovy_pocet/$limit);
$pociatok=($strana*$limit)-$limit;
To KIIV : $query="SELECT * FROM kniha_navstev order by datum DESC limit $pociatok, $limit";
$result=mysql_query($query, $link) or die ("Spojenie s databázou bolo neúspešné");
$num=mysql_num_rows($result);
//$ctrl je pomocná premenná skusil som to takto ale pise ze spojenie bolo neuspesne
To KIIV : neviem ako by mal ten sql dotaz vyzerat a do ktorej casti ho zakomponovat
aha dik v tom si mi pomohol echo "<a href=\"kniha_navstev.php?ctrl=1&strana=",$strana+1,"\">nasledujúca strana</a>";
ale teraz ked prepnem na stranku napr. 2 stale mi zobrazuje prvu a ani limit 5 prispevkov na stranku nefunguje...
To Anonymní uživatel : nevedel by si mi pomoct neviem to spolu spojit
databaza ide aj pridavanie prispevkov a ked pridam 5 prispevkov na stranku dalej sa vytvori odkaz na dalsiu ale prispevky stale pridava na prvu a po kliknuti mi ukaze len Error 404 - Not Found
The requested URL /index.php was not found on this server.
Požadovaná stránka /index.php nebyla nalezena.
stranku si mozete pozriet http://www.infinity.yw.sk/kniha_navstev.php
Kód:
<?
$dbServer = " ";
$dbUser = " ";
$dbPassword = " ";
$dbName = " ";
$link=mysql_pconnect ($dbServer,$dbUser,$dbPassword) or die ("Spojenie neúspešné.");
$db = mysql_select_db($dbName, $link) or die ("Nepodarilo sa otvoriť databázu.");
$query="SELECT * FROM kniha_navstev ORDER BY datum";
$result=mysql_query($query, $link) or die ("Spojenie s databázou bolo neúspešné");
$num=mysql_num_rows($result);
//$ctrl je pomocná premenná
if ($ctrl1<>1)
{
$strana=1;
}//endif
$limit=5;
$celkovy_pocet=$num;
$pocet_stran=ceil($celkovy_pocet/$limit);
$pociatok=($strana*$limit)-$limit;
for ($i=1; $i<=$pocet_stran; $i++)
{
if ($i<>$strana)
{
echo "<a href=\"index.php?ctrl=1&strana=",$i,"\">",$i,"</a> | ";
}
else
{
echo "<font color=\"#FF0000\">",$i,"</font> | ";
}//endif
}//endfor
if ($strana<>$pocet_stran)
{
echo "<a href=\"index.php?ctrl=1&strana=",$strana+1,"\">nasledujúca strana</a>";
}//endif
echo "</p>";
// -- Připojení k databázi a správné nastavení češtiny --
// Připojení k databázi.
$db_spojenie = mysqli_connect
('server', 'user', 'heslo', 'tabulka');
// Otestování, zda se připojení podařilo.
if (!$db_spojenie)
{
echo 'Připojení se nepodařilo, sorry';
echo '';
echo 'Popis chyby: ', mysqli_connect_error();
exit();
}
// Správné nastavení češtiny.
$objekt_vysledku = mysqli_query($db_spojenie, "SET NAMES 'cp1250'");
if (!$objekt_vysledku)
{
echo 'Poslání SQL příkazu se nepodařilo, sorry';
echo '';
echo 'Popis chyby: ', mysqli_error($db_spojenie);
exit();
}
// -- Vlož nový zápis, pokud byl odeslán formulářem --
// Test, jestli přišla data z formuláře.
if (isset($_POST['sprava']))
{
// Vytvoření SQL příkazu typu INSERT.
$sql_prikaz =
"INSERT INTO kniha_navstev(datum,meno,email,zapis) "
."VALUES(NOW(),'"
.mysqli_real_escape_string($db_spojenie,$_POST['meno'])
."','"
.mysqli_real_escape_string($db_spojenie,$_POST['email'])
."','"
.mysqli_real_escape_string($db_spojenie,$_POST['sprava'])
."')"
;
// Zaslání SQL příkazu do databáze.
$objekt_vysledku = mysqli_query($db_spojenie, $sql_prikaz);
if (!$objekt_vysledku)
{
echo 'Poslání SQL příkazu se nepodařilo, sorry';
echo '';
echo 'Popis chyby: ', mysqli_error($db_spojenie);
exit();
}
echo 'Nový zápis do knihy návštev pridaný.';
}
// -- Vypiš všechny zápisy v knize návštěv --
// Zaslání SQL příkazu do databáze.
$objekt_vysledku = mysqli_query($db_spojenie,
'SELECT * FROM kniha_navstev order by datum DESC');
if (!$objekt_vysledku)
{
echo 'Poslání SQL příkazu se nepodařilo, sorry';
echo '';
echo 'Popis chyby: ', mysqli_error($db_spojenie);
exit();
}
// Zobrazení všech vrácených dat.
while ($riadok = mysqli_fetch_array($objekt_vysledku))
{
echo '<hr />';
echo 'Dátum a čas: ',$riadok['datum'],'';
echo 'Napísal: ',$riadok['meno'],' (',$riadok['email'],')';
echo 'Zápis: ',$riadok['zapis'],'';
echo '';
}
?>
</body>
</html>
<form name="kniha" action="" method="post">
<b>Meno:</b>
<input name="meno" size="40">
<b>Mail:</b>
<input name="email" size="40">
<b>Správa:</b>
<textarea name="sprava" rows="5" cols="30"></textarea>
<input type="submit" value="Odoslať správu">
</form>
</body>
</html>
To Quiark :
napísal som "...by som mohol používať štandardné...", kladiem dôraz na POUŽÍVAŤ, nie tvoriť, práve to že mám zopár svojich C++ knižníc ale akosi v MSVC++ štrajkujú...