Od kiedy edit.Text nie jest stringiem?

0

Cześć, mam problem. A właściwie miałem, bo go obszedłem. Otóż miałem jakąś funkcję z parametrami:

function funkcja(var t1, t2, t3: string): boolean;

Wywoływałem ją w taki spsosób:

if funkcja(edit1.Text, edit2.Text, edit3.Text) then....

Jednak kompilator wywalał, że przekazywane parametry i parametry właściwe muszę być tych samych typów.

O co mu chodziło?

0

deklaracja var jest dla kompilatora informacja ze typy musza byc IDENTYCZNE!!
a edit.text jest (chyba) TCaption a nie string.
Inna para kaloszy ze:

type TCaption = string;

ale to nie sa identyczne typy.
jak chcesz tak zrobic, to musisz dac

function funkcja(var t1, t2, t3: TCaption): boolean
0

Co do pytania w temacie - od zawsze :D

dokładnie, desperat - TEdit.Text to jest TCaption,a wyamgane są typy identyczne przy przekazywaniu przez var.

A przez rzutowanie typów nie pójdzie? Funckja(bla, bla, String(Caption));

Ewentualnie niestety musisz sobie przepisywać treść do tymczasowego stringa i jego przekazywać.

0

Bullshit

function funkcja(var t1, t2, t3: string): boolean;

Funkcja(edit1.text, edit1.text, edit1.text); // nie pójdzie!

ale jeśli:

function funkcja(t1, t2, t3: string): boolean;

Funkcja(edit1.text, edit1.text, edit1.text); // pójdzie!

Wniosek: przekazywać przez referencje można zmienne, a nie właściwości klas, których nie idzie zmienić wewnątrz później. Typy tu nie grają roli.

0

No tak, ale będą kopiowane wartośći a po wyjściu z tekst w editach będzie miał znowy tą samą wartość :>

0

Zrób tak:

function test(Edit1, Edit2, Edit3 : TEdit): Boolean;
begin
  Edit1.Text := 'test';
  //itd.
end;

[do postu poniżej]

Nie kapuje [???] [???] . Przeciez własnie w tym problem że nie da sie tego przekazac jako var :0 .

0
Dominik napisał(a)

Zrób tak:

function test(Edit1, Edit2, Edit3 : TEdit): Boolean;
begin
  Edit1.Text := 'test';
  //itd.
end;

Eeee, to w sumie można by było przekazać jako parametr

var

w Twoim przypadku, zobacz jeszcze raz co napisałeś ;)

0
Dominik napisał(a)

Przeciez własnie w tym problem że nie da sie tego przekazac jako var :0 .

Jak sie nie da??
Czytaliscie moj post??
Wydaje mi sie ze ten temat powinien juz byc zamkniety ;P bo odpowiedz juz padla (nawet 2 razy, Ktos potwierdzi to :) )

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