Par C++ problemčića

poruka: 46
|
čitano: 6.470
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
[ Par C++ problemčića ]

Ovako imam C++ Builder 2010 i sad trebala bi mi mala pomoć, tražio sam po netu već i nisam baš našao neki dobar odgovor pa ovako:

 

1. Kako koristiti foreach petlju [ne pitam sad doslovno kako se koristi jer znam, nego inače koliko sam ja skuzio je nema nego treba pretprocesorska naredba vjerojatno, tj #include <datoteka.h> ali neznam koje datoteke točno] ?

 

2. Kako pročitati i izbrojiti fajlove unutar nekog direktorija ?

 

3. Sad jos jedan problem, tj, imam recimo string sa recimo pathom do programa [bez imena samog programa] i sad ja hoću jos dodati recimo jos ime programa,

i to sve pokrenuti pomoću system naredbe jednostavno ne radi, isprobavao sam svašta i ne radi.

 

Primjer 3. problema [!ovo ne radi]:

Kako riješiti taj problem pokretanja?

 string path = "C:\\Folder1";

string filename = "\\Program1.exe";

system (path+filename);

 

Zahvaljujem!

Poruka je uređivana zadnji put sub 21.8.2010 1:24 (NiGHT_RiDER92).
Moj PC  
0 0 hvala 0
15 godina
protjeran
offline
RE: [ Par C++ problemčića ]

1. C++ nema foreach petlju. Ima obični for.

 

2. Kad napraviš novu VCL aplikaciju potraži TFileListBox (Win 3.1). Staviš na formu i onda možeš dodati npr. gumb, i na klik:

 

void __fastcall TForm1::Button1Click(TObject *Sender){
    FileListBox1->Directory = "C:\\";
    for(int i = 0; i < FileListBox1->Items->Count; i++)
       ShowMessage(FileListBox1->Items->Strings[i]);
}

 

3. Postoje 4 načina kako pokrenuti proces. Prvi je način preko system funkcije no ne preporučujem. Drugi način je preko WinExecute pa ShellExecute i kreiranjem procesa. Npr.:

 

WinExec("C:\\MyProgram.exe", SW_NORMAL);  

 

Ako radiš konzolne aplikacije onda je kompliciranije pošto teže možeš koristiti gornje funkcije, no kod GUI aplikacija s formama nema problema. Tada već možeš koristiti funkcije koje posebno odvoje putanju do programa i sam naziv programa ako imaš pun path.

 

14 godina
neaktivan
offline
RE: [ Par C++ problemčića ]
Tracer kaže...

 

2. Kad napraviš novu VCL aplikaciju potraži TFileListBox (Win 3.1). Staviš na formu i onda možeš dodati npr. gumb, i na klik:

 

void __fastcall TForm1::Button1Click(TObject *Sender){
    FileListBox1->Directory = "C:\\";
    for(int i = 0; i < FileListBox1->Items->Count; i++)
       ShowMessage(FileListBox1->Items->Strings[i]);
}

Zahvaljujem na prijasnjem odgovoru, ali nije mi točno to trebalo ,znam da se tako moze prebrojiti i znam to napravit,  nego pitam dali ima neka funkcija ili tako nesto da unutar programa (znaci bez tih stvari razbacanih po formi) da izbroji u direktoriju fajle i spremi u neki objekt tipa int taj broj fajlova pa da ga ja koristim dalje ako zatreba?

 

ILI

 

Ako vec recimo stavljam FileListBox, kako napraviti da on ne prikazuje "sam sebe", recimo kompajliram program "Program1.exe" i stavim ga u isti direktorij koji FileListBox čita, kako napraviti da se taj "Program1.exe" tj sam sebe da ne prikazuje?

 

I jos jedno pitanje, ovako, imam ovaj kod dolje prikazan i kao rezultat mi se ispise za integer = 15ea840, a za broj, naravno 5, ali to nema veze nego zanima me sta tocno znaci taj "15ea840", dali je to memorijska lokacija gdje je spremljen broj 5, nije mi to jasno bas.

 

 

using namespace std;
    int broj = 5;
    int* integer = new int;
    *integer = broj ;

    cout << integer << endl;
    cout <<  broj << endl;
    system ("PAUSE");

    return 0;

 

 

 

 

 

Evo iskušao sam tvoj kod [rezultat kompajliranja je E2085: Invalid Pointer Addiction] :

 

nt _tmain(int argc, _TCHAR* argv[])
{
    char path[50] = "C:\\Desktop";
    char filename[50] ="\\phpEditor.exe";
    WinExec(path+filename,SW_NORMAL);

    return 0;
}

 

Poruka je uređivana zadnji put sub 21.8.2010 2:35 (NiGHT_RiDER92).
15 godina
protjeran
offline
Par C++ problemčića

Ono gore sa adresom je u redu, a za pokretanje programa i listanje datoteka pogledaj ovdje:

 

http://rapidshare.com/files/414167303/Konzola_s_formom.zip

 

Kad odzipaš pokreni Project1.cbproj, a zatim kad se otvori C++ Builder View/Units.../File1.cpp. Pokreni programi to je to.

Moj PC  
1 0 hvala 1
14 godina
neaktivan
offline
RE: Par C++ problemčića

E super sad radi, to se trazi, nadam se da ti nije problem ak te gnjavim s pitanjima, ali dosta toga na netu kaj nađem mi baš nije dalo odgovor pa onda moram pitat ovdje.

14 godina
neaktivan
offline
RE: Par C++ problemčića

Evo jos jedan problemcic, nije mi bas jasno, znaci ovo bi trebalo pokazati koju

memorijsku adresu rezerviraprogram za tekst koji cu unijeti,[nadam se da to je to] ali,

kad dode do kraja napravio sam da se vrati na pocetak, ali on opet potpuno istu memorijsku adresu zauzima za tekst,

nije mi jasno, kako moze opet isto zauzeti ako su vec podaci tamo  (ili nisu!?)

 

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

    char podaci[MAX_PATH];
    int *mem_adresa;
    cout <<"\n\n";
    cout <<"Unos teksta: " <<endl;
    gets(podaci);
    cout <<"\n\n";
    malloc(atoi(podaci)*sizeof(podaci));
    cout <<"Rezervirana memorijska adresa: "<<&mem_adresa<<endl;
    cout <<"\n\n";
    cout <<"Upisani podaci:"<<endl;
    puts(podaci);
    cout <<"\n\n";
    goto pocetak;
    system ("PAUSE");
    return 0;
}

 

Poruka je uređivana zadnji put uto 24.8.2010 20:39 (NiGHT_RiDER92).
15 godina
protjeran
offline
RE: Par C++ problemčića

cout <<"Rezervirana memorijska adresa: "<<&mem_adresa<<endl;

 

Ovom linijom si ispisivao adresu pokazivača, a ne mem lokaciju alocirane memorije. Zato je uvijek isto. Znači, probaj ispisati samo mem_adresa (bez &). No problem je zapravo i prije:

 

malloc(atoi(podaci)*sizeof(podaci));

 

To bi trebalo ovako:

 

mem_adresa = (int*)malloc(atoi(podaci)*sizeof(podaci));

 

i na kraju ne zaboravi

 

free(mem_adresa);

 

14 godina
neaktivan
offline
RE: Par C++ problemčića
Tracer kaže...

cout <<"Rezervirana memorijska adresa: "<<&mem_adresa<<endl;

 

Ovom linijom si ispisivao adresu pokazivača, a ne mem lokaciju alocirane memorije. Zato je uvijek isto. Znači, probaj ispisati samo mem_adresa (bez &). No problem je zapravo i prije:

 

malloc(atoi(podaci)*sizeof(podaci));

 

To bi trebalo ovako:

 

mem_adresa = (int*)malloc(atoi(podaci)*sizeof(podaci));

 

i na kraju ne zaboravi

 

free(mem_adresa);

 

 

Hvala, ali kaj tocno radi onda ova linija koda?

Kaj onda znaci ovaj (int*) prije malloc?

mem_adresa = (int*)malloc(atoi(podaci)*sizeof(podaci));

Poruka je uređivana zadnji put uto 24.8.2010 20:49 (NiGHT_RiDER92).
15 godina
protjeran
offline
RE: Par C++ problemčića

Ta linija će novo-alocirani memorijski prostor pridružiti pokazivaču. Znači, pokazivač mem_adresa pokazuje na novi memorijski prostor od atoi(podaci)*sizeof(podaci) bajtova.

 

Ali sad kad malo bolje pogledam nema uopće potrebe za nikakvom alokacijom memorije jer si prostor za tekst već zauzeo deklaracijom polja:

 

char podaci[MAX_PATH];

 

a ako te zanima gdje se ono nalazi u memoriji onda ispišeš njegovu početnu adresu:

 

cout << &podaci[0];

 

Edit: int* prije malloc casta povratnu vrijednost malloc funkcije u int* (jer mem_adresa je int*).

Poruka je uređivana zadnji put uto 24.8.2010 20:53 (Tracer).
14 godina
neaktivan
offline
RE: Par C++ problemčića

Aha sad mi je  jasnije, radim to po knjizi i proucavam, malo su zeznuti pokazivači pa pokusavam skuzit.

14 godina
neaktivan
offline
RE: Par C++ problemčića
Tracer kaže...

 

Edit: int* prije malloc casta povratnu vrijednost malloc funkcije u int* (jer mem_adresa je int*).

Znači ako bi memorijska adresa bila float ili double onda bi prije malloc islo (float*) odnosno (double*) ?

15 godina
protjeran
offline
Par C++ problemčića

Tako je. malloc i free su ostavštine iz C-a, a u C++u možeš koristiti operatore new i delete.

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
RE: Par C++ problemčića

Malloc i free mi ljepse izgleda Smijeh

15 godina
protjeran
offline
RE: Par C++ problemčića
NiGHT_RiDER92 kaže...

Malloc i free mi ljepse izgleda Smijeh

Nije ni new, delete loše ;) Čak možda izgleda i preglednije, no ono što malloc i free nude više u usporedbi s new i delete je puno lakša realokacija memorije (proširivanje i suživanje već alocirane memorije) funkcijom realloc. Kod C++a (new, delete) toga nema već se umjesto toga mora u potpunosti kreirati novi blok podataka, prekopirati podatke s starog bloka u novi i zatim izbrisati stari blok. Zapravo, jedina dobra alternativa u C++u su vektori (STL).

Poruka je uređivana zadnji put uto 24.8.2010 21:06 (Tracer).
14 godina
neaktivan
offline
RE: Par C++ problemčića

Aha sad mi je to sve jasnije, ali svakim danom sve bolje i bolje mi ide C++ (inace sam se s C# prebacio na ovo, a u C# si vidio da sam i neke programcice napravio (radio, adresar..)

15 godina
protjeran
offline
RE: Par C++ problemčića

Drago mi je ;) Iako, nemoj odustati niti od C#-a jer će ti i on biti puno jasniji kad naučiš nešto C++a.

14 godina
neaktivan
offline
RE: Par C++ problemčića

Znam ali prioritet mi je C++ naucit, C# vecinom kuzim, i laksi je od C++-a ali mi se kod C#-a ne sviđa jer je ovisan o .NET Frameworku

i samo na Windowsima radi, dok C++ programi rade svugdje.jednostavno ne volim takva ograničenja :D

15 godina
odjavljen
offline
RE: Par C++ problemčića
NiGHT_RiDER92 kaže...

Znam ali prioritet mi je C++ naucit, C# vecinom kuzim, i laksi je od C++-a ali mi se kod C#-a ne sviđa jer je ovisan o .NET Frameworku

i samo na Windowsima radi, dok C++ programi rade svugdje.jednostavno ne volim takva ograničenja :D

Ako te to odbilo od C#, imam jednu stranicu za tebe: http://www.mono-project.com/Main_Page

Heart: _/\_/\_/\_/\_/\_/\_/\_/\_ Brain: __________________________
14 godina
neaktivan
offline
RE: Par C++ problemčića

Pa na neki nacin me i je odbilo, jer mi se ne svida da neke stvari samo na Windowsima rade (makar vecina ljudi Windowse koristi, ali svejedno).

Idem pogledat stranicu.

14 godina
neaktivan
offline
RE: Par C++ problemčića

Zna tko kako procitati HTML stranicu (s Interneta, ne spremljenu na disku) i pronaci odreden tekst u njoj u C++u?

16 godina
moderator
offline
RE: Par C++ problemčića

Ako koristis Borland C++Builder, onda imas ugradjene komponente za ucitavanje web-stranica. Ako ne koristis, onda pogledaj ovo: http://www.alhem.net/Sockets/download.html

Imas primjere za koristenje te biblioteke u u zip-u, u podmapi tests, a imas primjere i u Sockets-tutorial.tar.gz.

14 godina
neaktivan
offline
RE: Par C++ problemčića

A dali znaš možda čemu služi Application->CleanupInstance();

Što točno radi ta naredba?

16 godina
moderator
offline
RE: Par C++ problemčića
NiGHT_RiDER92 kaže...

A dali znaš možda čemu služi Application->CleanupInstance();

Što točno radi ta naredba?

Oslobodi memoriju koji je zauzela aplikacija (prije nego se aplikacija zatvori)? Pogledaj sto pise u helpu.

15 godina
neaktivan
offline
RE: Par C++ problemčića

Evo samo jedan citat koji možda  to šturo  objasnio:

 

 

 "CleanupInstance: Do not call CleanupInstance directly. CleanupInstance is called automatically when the object instance is destroyed. CleanupInstance releases all long strings and variants. It sets long strings to empty and variants to Unassigned. "

 

 

Private
14 godina
neaktivan
offline
RE: Par C++ problemčića

Aha ok hvala, ma nisam bil siguran dal je to tako nešto, makar sama riječ govori što bi trebalo otprilike ta naredba raditi ali eto da pitam za svaki slučaj :)

16 godina
moderator
offline
RE: Par C++ problemčića
NiGHT_RiDER92 kaže...

Aha ok hvala, ma nisam bil siguran dal je to tako nešto, makar sama riječ govori što bi trebalo otprilike ta naredba raditi ali eto da pitam za svaki slučaj :)

Ne znam kako je kod C++Buildera, no kod Delphija se s takvim stvarima u pravilu ne moras opterecivati. VCL ce sve to obaviti umjesto tebe.

14 godina
neaktivan
offline
RE: Par C++ problemčića

Kad već pitam, jos me zanima dali mi je tko voljan objasniti (nisam na netu nasao objasnjenje) kako radi tocno AntiFreeze komponenta

i zanima me razlika izmedu Unicode i Ansi Stringa? Zahvaljujem

14 godina
neaktivan
offline
Par C++ problemčića

Zna netko kako isprogramirati  za neki mp3 Player spremanje i ucitavanje pjesama (playlistu) ?

Moj PC  
0 0 hvala 0
16 godina
moderator
offline
RE: Par C++ problemčića
NiGHT_RiDER92 kaže...

Kad već pitam, jos me zanima dali mi je tko voljan objasniti (nisam na netu nasao objasnjenje) kako radi tocno AntiFreeze komponenta

Mislis - TIdAntiFreeze? http://www.kumanov.com/docs/prog/indy/007201.html

 

NiGHT_RiDER92 kaže...

i zanima me razlika izmedu Unicode i Ansi Stringa? Zahvaljujem

Ovo bi ti moglo pomoci: http://www.micro-isv.asia/2008/08/get-ready-for-delphi-2009-and-unicode/

 

NiGHT_RiDER92 kaže...

Zna netko kako isprogramirati  za neki mp3 Player spremanje i ucitavanje pjesama (playlistu) ?

Iz ovog zbilja ne mogu zakljuciti o cemu tocno govoris.

14 godina
neaktivan
offline
RE: Par C++ problemčića
NiGHT_RiDER92 kaže...

Zna netko kako isprogramirati  za neki mp3 Player spremanje i ucitavanje pjesama (playlistu) ?

Iz ovog zbilja ne mogu zakljuciti o cemu tocno govoris.

Zahvaljujem!

Govorim o tome, sad recimo imam Mp3 Player, i TreeView komponentu koristim, ja zapravo hocu (recimo da imam datoteku koja se zove playlist) da iz nje procitam informacije koje mi trebaju i uvrstim ih u TreeView (recimo da procita sve naslove pjesama koji spadaju pod odredeni žanr, njihove pathove, itd... i uvrsti ih u TreeView) nadam se da sam bio jasniji.

 

Nova poruka
E-mail:
Lozinka:
 
vrh stranice