Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

smijesno cudan kod... (borland)

[es] :: C/C++ programiranje :: smijesno cudan kod... (borland)

[ Pregleda: 2431 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

IDE

Član broj: 53403
Poruke: 586
*.crnagora.net.



Profil

icon smijesno cudan kod... (borland)01.07.2005. u 16:45 - pre 229 meseci
imam jedan jako cudan problem!!pomalo i smijesan!!
da bi shvatili sta se desava, napravimo nesto sto lici na obican digitron...
imacemo jednu edit komponentu, i dugmad od 0 do 1...
u svako dugme, da bi dopisivao nov broj na vec postojeci u Edit-u stavimo kod:

u heder fajlu:
------------
String a,b;
-----------


u .cpp-u:
------------
za dugme 1:

#include<string.h>
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
a=Edit1->Text;
b=strcat(a.c_str(),"1");
Edit1->Clear();
Edit1->Text=b;
}
za dugme 2:

void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{

a=Edit1->Text;
b=strcat(a.c_str(),"2");
Edit1->Clear();
Edit1->Text=b;
}
i tako do kraja...

tu se desava jedna jako cudna stvar:
kad kliknemo npr dugme "2", onda ce sva ostala dugmad normalno raditi, tj dopisivati npr. 4,7,9,5 i SAMO NECE RADITI 3!!!!!tj. koje god dugme da kliknemo, nikad nece raditi ono za 1 vece od njega!!!!!!!!!!!

moze li mi ko objasniti zasto je to tako?????



there's something out there
waiting for us,
and it ain't no man...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: smijesno cudan kod... (borland)01.07.2005. u 17:31 - pre 229 meseci
Kod koji si pokazao nije dobar... Nemoj da Mesas preterano AnsiString-ove i
NULL terminated stringove. Ono sto ti nekada vidis kod AnsiString-a je zapravo
kopija a ne realna vrednost...

Probaj ovakav kod:

Stavi 10 TSpeedButton-a, i za svaki posebno postavi Tag property
od 1,2,3,...,0.

Zatim dodaj SAMO JEDAN dogadjaj (a ne 10) SpeedButton1Click, a ostale preusmeri
u njega - umesto da kliknez za novi OnClick, ti samo iz ComboBox-a izaberi onaj
prvi. A preko Tag-a ce razluciti koji si pritisnuo...

Button1 je za vracanje nazad.

Upis ce ici na Panel1 umesto na Edit1.



Code:

// NETESTIRANO !!!
 
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
  if ( Panel1->Caption.Length() > 16 )
     return;

  int Broj =  ( (TSpeedButton*)Sender )->Tag;
  Panel1->Caption = Panel1->Caption + IntToStr( Broj );        
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if ( Panel1->Caption.Length() > 0 )
      Panel1->Caption = Panel1->Caption.SetLength( Panel1->Caption.Length()-1 );
}

 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 895
*.plus.com.



+4 Profil

icon Re: smijesno cudan kod... (borland)01.07.2005. u 18:57 - pre 229 meseci
Code:

a=Edit1->Text;
b=strcat(a.c_str(),"1");


Shteta shto ovo nije puklo, inache bi video u chemu je problem.
Nikad nemoj koristiti c-funkcije koje interno menjaju bafer AnsiString-a!

Ovo gore si mogao jednostavno i ovako da napishesh :
Code:

b = a + "1";

 
Odgovor na temu

IDE

Član broj: 53403
Poruke: 586
*.crnagora.net.



Profil

icon Re: smijesno cudan kod... (borland)01.07.2005. u 19:17 - pre 229 meseci
hvala vam, pogledacu!!
there's something out there
waiting for us,
and it ain't no man...
 
Odgovor na temu

IDE

Član broj: 53403
Poruke: 586
*.crnagora.net.



Profil

icon Re: smijesno cudan kod... (borland)02.07.2005. u 15:57 - pre 229 meseci
a ovako nesto za svako dugme:

#include<string.h>
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
String a="";
a=Edit1->Text;
b=a+"1";
Edit1->Clear();
Edit1->Text=b;
}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ????

i ako jos hocu da ogranicim broj cifara koje se mogu upisati u edit:

#include<string.h>
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
if(Edit1->Text.Length()<9)
{
String a="";
a=Edit1->Text;
b=a+"1";
Edit1->Clear();
Edit1->Text=b;
}
}

da li bi ovako nesto valjalo???

(volim dobiti dobar prijedlog, kako bih bolje naucio nesto, ali jos vise volim sam napisati nesto sto moze proci, i pri tom shvatiti gdje sam pogrijesio prije...Shvatio bas i nisam pretjerano, ali nesto novo-sto radi, napisao jesam...mozda sam i tvrdoglav, ali vise volim doraditi sopstveni kod, pa makar on ne bio bas najbolji i trosio vise resurse nego ostali i njega koristiti...A za odgovore vase sam vise nego zahvalan!!Preko njih ucim....)


[Ovu poruku je menjao fucking voodoo dana 02.07.2005. u 16:59 GMT+1]
there's something out there
waiting for us,
and it ain't no man...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: smijesno cudan kod... (borland)03.07.2005. u 11:56 - pre 229 meseci
Citat:

#include<string.h> // <--- OVO TI NE TREBA !!!
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
if( Edit1->Text.Length()<9 )
{
String a=""; //
a=Edit1->Text; //
b=a+"1"; // Edit1->Text = Edit1->Text + "1";
Edit1->Clear(); //
Edit1->Text=b; //
}
}


dakle:

Code:

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
   if( Edit1->Text.Length()<9 )
      return;
   Edit1->Text = Edit1->Text + "1";
}


ili, da ne bi pisao 10 funkcija, nego samo jednu zajednicku za sve SpeedButton-e:

Code:

// Prethodno dodeli Tag=1 za SpeedButton1, Tag=2 za SpeedButton2, ...
// ... Tag=0 za SpeedButton 0
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
   if( Edit1->Text.Length()<9 )
      return;
   
   int Broj =  ( (TSpeedButton*)Sender )->Tag;
   Edit1->Text = Edit1->Text + IntToStr( Broj );
}


Ovo poslednje je jako bitno jer imas manje koda, lakse se kod odrzava, itd...

 
Odgovor na temu

[es] :: C/C++ programiranje :: smijesno cudan kod... (borland)

[ Pregleda: 2431 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.