[ lordy007 @ 29.08.2007. 06:42 ] @
kad probam da startujem programm delphi mi vadi "[Error] Unit1.pas(169): E2008 Incompatible types"

evo mog koda

procedure TForm1.Button5Click(Sender: TObject);// plus
begin
begin
p:=StrToCurr(edit1.Text); // edit1.text go snima vo P
label2.caption :=CurrToStr(p);
edit1.Text :='';
xx := StrToCurr(label2.caption);
end;
begin
if xx = niz then // [Error] Unit1.pas(169): E2008 Incompatible types
edit1.text := label2.caption + edit1.text;
end;
end;


gdje gresim?
pozdrav!
[ savkic @ 29.08.2007. 08:15 ] @
Pokušavaš da mešaš dve promenljive različitog tipa, iz koda bi se dalo reći da je xx promenljiva tipa Currency ili Double/Extended a za niz se ne zna. Pošalji pun kod zajedno sa deklaracijama promenljivih.
[ lordy007 @ 29.08.2007. 11:26 ] @
Ovde ima i mnogoh toga koda sto nije potrebno
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons;

type
    Trezultat = set of 0..99;
  TForm1 = class(TForm)
    Button1: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    Button19: TButton;
    Button20: TButton;
    Edit1: TEdit;
    Button21: TButton;
    Button22: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button21Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure Button20Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);




  private
    { Private declarations }
  public
    { Public declarations }
  end;





var
  Form1: TForm1;
 a, b, c, d, e, f, g, h, i, z : currency;
 q,p,w,xx : currency;
  rezultat  : Trezultat;
  niz : Array [-9999..9999]of currency;


implementation

{$R *.dfm}







procedure TForm1.Button8Click(Sender: TObject);
begin
 z:=0;
if edit1.text = '0' then edit1.Text := '';
edit1.text := edit1.text + currtostr (z);


end;

procedure TForm1.Button9Click(Sender: TObject);
begin
a:=1;
if edit1.text = '0' then edit1.Text := '';
edit1.text := edit1.text + currtostr (a);
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
b:=2;
if edit1.text = '0' then edit1.Text := '';
edit1.text := edit1.text + currtostr (b);
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
c:=3;
if edit1.text = '0' then edit1.Text := '';
edit1.text := edit1.text + currtostr (c);
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
d:=4;
if edit1.text = '0' then edit1.Text := '';
edit1.text := edit1.text + currtostr (4);
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
e:=5;
if edit1.text = '0' then edit1.Text := '';
edit1.text := edit1.text + currtostr (e);
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
f:=6;
if edit1.text = '0' then edit1.Text := '';
edit1.text := edit1.text + currtostr (f);
end;

procedure TForm1.Button20Click(Sender: TObject);
begin
g:=7;
if edit1.text = '0' then edit1.Text := '';
edit1.text := edit1.text + currtostr (g);
end;

procedure TForm1.Button19Click(Sender: TObject);
begin
h:=8;
if edit1.text = '0' then edit1.Text := '';
edit1.text := edit1.text + currtostr (h);
end;

procedure TForm1.Button18Click(Sender: TObject);
begin
i:=9;
if edit1.text = '0' then edit1.Text := '';
edit1.text := edit1.text + currtostr (i);
end;

procedure TForm1.Button21Click(Sender: TObject);
begin
edit1.text := '';
label1.Caption:='';
end;

procedure TForm1.Button5Click(Sender: TObject);// plus
begin
       begin
 p:=StrToCurr(edit1.Text);      // edit1.text go snima vo P
 label2.caption :=CurrToStr(p);
 edit1.Text :='';
 xx := StrToCurr(label2.caption);
  end;
  begin
 if xx = niz  then

    edit1.text := label2.caption + edit1.text;
    end;
end;

procedure TForm1.Button6Click(Sender: TObject);  // koma(,)
begin
edit1.text := edit1.text + ',';
end;

end.
[ savkic @ 29.08.2007. 18:28 ] @
> if xx = niz then

Ne možeš porediti promenljivu sa nizom već sa elementom niza, dakle:
Code:

 if xx = niz[0] then


Da li ćeš koristiti 0 ili neki drugi indeks to već zavisi od tvog koda. Nije mi jasna svrha koda a ni tako deklarisanog niza, verovatno to što pokušavaš može da se uradi na neki jednostavniji način.
[ lordy007 @ 29.08.2007. 19:11 ] @
verovatno moze funkciju taj button je "+" u sustina program je kalkulator
pa nisam voljeom da uradim calc. preku neki gotov kod tuku sam ja zelio to smisliti i sostavit :P al sam zaglavio zaradi malog poznavanje :P
[ TraktoRISTA Mijo @ 30.08.2007. 02:33 ] @
da,ovo ti je najlakši način da zaglaviš..nije baš pregledno,ustvari,uopće nekužim što program radi..ako je kalkulator,onda si to mogao puno ljepše napravit..kreni polako,proceduru po proceduru..
[ lordy007 @ 30.08.2007. 05:38 ] @
to sam i uradio al sam zaglavio n preceduru Button (koje vrsi funkcuju 'sobrianja' +)
stvarno nemogu ovo izvediti bar za sada :)

zelim da kad stisnem +(button) da zadaenu vrejdnost u text1 snima njekade u neko promenlivu u memoriju i kad stisnem jos jedan put da soberi novi vrednost sa edit1 i sa ta variabla koju je vec snimena i sada da celokupni iznos se unese u ista variabla pa kad unesem novu vrednost (po treci pu t tako dalje...) da se pak sobere vrednost i tako dalje i tako dalje... al nikako nemogu ovo resiti ... ne volim da mi neko napise ceo koda molim vas :P . zelim samo ideu kako bi ovo mogo odradio
[ TraktoRISTA Mijo @ 30.08.2007. 18:01 ] @
znači:
čitaš iz edit-a
sišćeš button +
čitaš iz edit-a
sišćeš button +
...
nakon drugog i svakog sljedećeg stiskanja buuton-a želiš rezultat,jesi to mislio?
onda za button procceduru možeš ovako
čitaš p1(varijabla p1 prvi pribrojnik)iz edit-a
čitaš p2(varijabla p2 drugi pribrojnik)iz label-a(u njeg zapisuješ rezultat)
zbrojiš p1+p2
zapišeš ponovo u label rezultat
možeš dodat provjeru da ako je rezultat 0 da onda ne ispisuje rez zbrajanja(jer još uvjek moramo unjet drugi pribrojnik)
[ lordy007 @ 31.08.2007. 05:41 ] @
mnista mi ni e jasno :)
[ priki @ 01.09.2007. 23:45 ] @

Code:
 p:=StrToCurr(edit1.Text); 


ovde lako dobiješ convert error jer neko će ti ukucati slovo Z i kako ćeš to prebaciti u currency

Code:
 xx := StrToCurr(label2.caption);  


"čupanje" promenjivih iz labela zaboravi, labele su za prikazivanje

Code:
 xx = niz  then // [Error] Unit1.pas(169): E2008 Incompatible types 


naravno da je error, svaki niz ima svoje članove kojima pristupaš preko indexa
xx je jedna promenjiva, sa jednom vrednošću,
niz sadrži [1,2,....n] vrednosti



[ lordy007 @ 04.09.2007. 01:18 ] @
hvala za objasnenje :). kad uradim program ...cu ga poslati :)