Jak uzyc stringow w zadaniach matematycznych?

0

Mam w Delphi program, ktory jak klikne guzik to pokazuje jako caption w label1 liczbe z edit1 pomnożona przez 3

procedure TForm1.Button2Click(Sender: TObject);
begin
label1.Caption:=FloattoStr(StrtoFloat(edit1.text)+znak[0]);
end;

I tutaj jest problem, otoz w tablicy pod [0] mam *3, pod [1] mam /3 pod [2] mam div3, itd. ale wyrzuca mi blad kompilator. Wie ktos jak to zrobic?

Jeszcze mam drugi problem. Jak zrobic aby do Edita nie mozna bylo wstawiac liter, a kropka zostala zamieniona na przecinek? No i przecinek tylko jeden moze byc. po prostu jak wpisuje do edita litere to nie moze tam zostac wpisana.

Pozdrawiam,
Łukasz

0

Bo instrukcja typu x '+' y jest nielegalna. Jak chcesz takie coś to poczytaj o onp (jest na forum). Trzeba zrobić parser tekstu, np

function F_Add(val1, val2 :Double) :double; // ty byka rąbnąłem, bo nie było typu funkcji
begin
 Result := val1 + val2;
end;

function F_SUB

itd...

const
 coeff :array [0..3] of string = ('+3', ...);
case indeks of
0 :Label1.Caption := FloatToStr(F_ADD(StrToFloat(Edit1.Text), StrToFloat(coeff[indeks][2])));
...

To tak bardzo na szybko. Taki niby parser tekstu

0

Jezeli zrobie tak, ze wczytuje wszysto jako String i wtedy daje

function F_Add(val1, val2 :String): Double;
begin
 Result := val1 + val2;
end;

To wyskakuje mi komunikat, ze nie moze ta wartosc byc Double.
Probowalem z Ord, ale nie za bardzo mi wychodzilo.

Poszukam dalej, jezeli ktos by mogl pomoc zarowno z wpisywaniem tylko niektorych wartosci do edita jak i z tym to bede bardzo wdzieczny :-)

Pozdrawiam,
Lukasz

0

function F_Add(val1, val2 :String): Double;
begin
Result := stringtofloat(val1) + stringtofloat(val2);
end;
string nie moze byc wyrazeniem chyba ze napisales sobie funkcje obliczajaca wyrazenia w stringu, string to moze byc liczba calkowita (integer) albo ulamek (single,double)
integer na string
inttostr
string na integer
strtoint
ulamek na string
floattostr
string na ulamek
strtofloat

1 użytkowników online, w tym zalogowanych: 0, gości: 1