Citat:
[...] idemo File, pa "include Unit Hdr",
odaberemo koji Unit "zovemo", i na taj nacin jedan drugog
"vide" tj. moze se slobodno na Form1 staviti dugme koje
ce imati vrijednost Form2->Show(); i sve ce super raditi...
(bar meni na par primjera...)
Dakle, potpuno je isto dali si išao preko glavnog menija
"File/include Unit Hdr", ili si ručno upisao:
#include "tajfajl.h"
Razlika je u tome što kada koristiš prvi slučaj, 'include'
direktivu će ti u kod ubaciti IDE, a u drugom slučaju to si
uradio ručno. Ja više volim da stvar oko "include" fajlova
kontrolišem sam, tim pre što s obzirom na količinu "include"
direktiva koje imam u svojim programima, čak i njih organizujem
u neke grupe radi preglednosti...
Inače (verovatno ovo i znaš), kada uključiš (include) neki
'header' fajl, time si zapravo time rekao da će se 'unit' u kome
ga uključuješ, pozivati na interfejs tog uključenog 'unit'-a.
To u tvom slučaju znači da će 'videti' Form2, i da će znati da
Form2 (preko tipa) ima Show() metodu. Takođe, kada praviš neke
svoje metode u Form2, koje ćeš pozivati iz Form1, one treba da
budu javne (public), inače će biti 'inaccessible'. Prava pristupa
se mogu ublaziti i 'friend' mehanizmom. Sve ovo je osnova OOP
i bilo bi dobro da to obnoviš.
Čuvaj se BCB Help-a! U njemu često koriste FormCreate() event.
Tu metodu nikako nemoj koristiti. Ona ima smisla samo u Delphiju,
a u BCB se može izvršiti i pre konstruktora što je nedozvoljeno
sa stanovišta C++-a. Umesto FormCreate() koristi klasičan
konstruktor! Ovo je problem koji je u BCB odavno identifikovan.
Citat:
Reci mi ako imas sto u vezi ovoga nacina...
koliko je "pouzdan", da li je dobar sto se tice memorijskih
resursa pri ucitavanju samog programa...
Tvoj program *nije* dobar sa stanovišta iskorišćenje resursa.
On je dobar samo kao primer uz BCB, a u OOP praksi se nikako
ne preporučuje niti koristi.
U tvom slučaju Form2 je za celo vreme rada programa učitan
u memoriju! Znači celo vreme je aktivan, a ti ga možda nikada
i nećeš pozvati ako je na primer u pitanju "About Dialog".
Zamisli još 100 takvih formi koje su celo vreme učitane!
Šta onda uraditi? Pretpostavimo da je Form2 zapravo "About
Dialog".
1) Dizajniraj svoj "About Dialog" po želji (dodaj slike, tekst,
odjavni OK taster, ...)
2) Idi u Project/Options/Forms/ i prebaci Form2 (About Dialog)
iz sekcije Auto-create u Available Forms.
3) Kod za pozivanje te "About Dialog"-a se menja, jer moraš
da kreiraš taj form radi prikaza, na primer ovako:
Code:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try
{
try
{
Form2 = new TForm2( this );
Form2->ShowModal();
}
catch ( const Exception &e )
{
ShowMessage( "Došlo je do neke greške!" );
}
}
__finally
{
if ( Form2 )
{
delete Form2;
Form2 = NULL;
}
}
}
Ovo može i kraće:
Code:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2 = new TForm2( this );
Form2->ShowModal();
delete Form2;
}
... ali to je već druga priča. Savetujem ti moju tehniku
ili da koristiš pametne pointere:
Code:
// ...
#include <memory>
// ...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
std::auto_ptr<TForm2> Form2( new TForm2( this ) );
try
{
Form2->ShowModal();
}
catch ( const Exception &e )
{
ShowMessage( "Došlo je do neke greške!" );
}
}
Citat:
druga stvar...napravio sam prije jedan fin programcic u
Visual C++-u koji je imao poduzi algoritam, i koji ne bih
htio da moram ponovo praviti u borland-u...
rijec je o obicnoj konzolnoj aplikaciji...da li mogu nekako
(kako) povezati da mi aplikacija u borlandu pozove tu aplikaciju,
a da joj ona vrati neku vrijednost (npr neki string koji je
dobijen na njoj svojstven nacin)kako bi to izgledalo?
Najlakse je da izlaz tvog VC++ programa upises u neki fajl,
koji ces odmah zatim otvoriti iz BCB-a, ucitati, isparsovati i
na kraju - upotrebiti.
Ako tvoj VC++ program ima i neki izlaz na ekran - super! tada
mozes izlaz umesto na ekran da automatski redirektujes izlaz u
fajl batch komandom ">". Svojevremeno sam radio neki program koji
je ispisivao u datoteku sistemski sadrzaj ipconfig.exe komande
koja je vracala MAC adrese racunara. Onda sam ja ucitavao tu
datoteku i nesto proveravao.
Na primer: "dir > t.txt" ce sadrzaj direktorijuma upisati u datoteku.
Citat:
i jois jedna stvar...napravio sma mali editor teksta u borlandu
koristeci Memo.
Sta treba da uradim da mi se kad dodjelim u windowsu da mi se
.txt fajlovi otvaraju pomocu tog editora, i uradim dvoklik
na neki txt, taj fajl ucita u moj editor, tj Memo komponentu??
sada kad uradim dvoklik, samo mi se otvori moj editor, ali
mi se tekst iz tog txt-a ne ucita u Memo komponentu...
znam da mnogo trazim,ali ako iko ima vremena da mi odgovori,
bio bih jako zahvalan.
Ovo nije trivijalna stvar, i za nju treba vise rada - na primer
gotova komponenta. Evo ti jedna adresa, sa celim source codom
za to:
http://www.lebeausoftware.org/
pronaji na sajtu TRegExtension.