Funkcje konwertujące w Delphi.

1

Przeglądam właśnie notatki z zajęć(czyli sehanine vs delphi), pytanie będzie więc o bardzo, bardzo podstawową rzecz i proszę się nade mna nie pastwić za poziom za bardzo >_<

Wydaje mi się, że w jednym miejscu w notatkach mam błąd. Czy to, że jesli we wszystkich ćwiczeniach które mam zanotowane(zadania typu oblicz 2+2 pobierając te liczby z kontrolek) w każdej ostatniej linijce jest edit.text:=inttostr (lub floattostr) tzn., że tak jest zawsze? Zawsze int lub float jak już przychodzi do 'oddawania'? Bo w jednym przypadku mam strtoint wpisany i nie wiem teraz czy 'bo tak' czy 'bo źle z tablicy przepisałam'?

4

Tu nigdy nie ma bo tak - wszystko musi być zawsze logiczne - zobacz co robisz:

Jeśli w którymś miejscu jest oczekiwany string, a ty masz integer - musisz użyć IntToStr
Jeśli w którymś miejscu jest oczekiwany string, a ty masz float - musisz użyć FloatToStr

np.

var
  x : integer;
  y : Float;
  t : String;
begin
  x := 2;
  y := 2.3;

  t := IntToStr(x);
  t := IntToStr(y);

To działa też w drugą stronę, jeśli masz np. liczbę jako string - np. z pola edit, a chcesz ją zapisać do zmiennej typu Integer to musisz użyć StrToInt;

var
  x : integer;
  y : Float;
  t1 : String;
  t2 : String
begin
  t1 := '2'; 
  t2 := '5.4';

  x := StrToInt(t1);
  y := StrToFloat(t2);

Każda zmienna ma swój typ i tylko taki typ do niej można zapisać.

"Rozpisz" sobie w głowie te polecenia:

IntToStr - Integer to String (zamieniamy integer na string)
FloatToStr - Float to String (zamieniamy float na string)
itp. itd.

BTW: na każdej z tych funkcji w kodzie powyżej możesz 'kliknąć' i zobaczyć ich dokładny opis...

I oczywiście polecam lekturę: Konwersja typów

2

akurat jest to przypadek, gdzie rozumiem definicję a jak patrzę na przykłady to już niezbyt wiem o co chodzi
to może inaczej, czy np. od góry do dolu w programie mogą być tylko strtointy lub tylko inttostry? a ta moja notatka która dała mi do myslenia wyglada tak:

var
p,a,h:integer
begin
a:=strtoint(edit1.text);
h:=strtoint(edit2.text);
p:=0,5*a*h;
edit3.text:=strtoint(p);
2

Nie, popatrz co robisz:

var
  p : double; // to nie może być integer (całkowita) - to wynika ze wzoru, którego poniżej używasz
  a, h : integer //może być integer, pod warunkiem, że do editów będziesz tylko integery wpisywała
begin
  a := StrToInt(edit1.Text); // musisz skonwertować ze stringa do integera
  h := StrToInt(edit2.Text); // musisz skonwertować ze stringa do integera

  p := 0,5*a*h;

  edit3.Text := FloatToStr(p); // musisz skonwertować z float do stringa

Staraj się zapisywać funkcje nie tak strtoint ale tak StrToInt - to ułatwia czytanie
Popatrz na zapis powyżej - czy nie jest bardziej czytelny? Nie musisz oszczędzać miejsca, pisz tak, aby poszczególne działania były wyraźnie oddzielone - to nie tylko ładnie wygląda na pierwszy rzut oka, ale ułatwia szukanie błędów.

0

Staraj się zapisywać funkcje nie tak strtoint ale tak StrToInt - to ułatwia czytanie
pozwalam sobie mieć odwrotne zdanie, strtoint wygląda czytelniej niż garbate StrToInt.

0

Ci z Borlanda wiedzą lepiej.

user image

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