rekord zwracany przez funckje

0

unit Unit2;

interface

Uses
Classes;

type
Tprop = record
s1, s2, s3: string;
end;

type
Tmod1 = class
private
public
function przetworz(var ss: string; nr: word): Tprop;
protected
end;

implementation

{ modul2 }

function Tmod1.przetworz(var ss: string; nr: word): TProp;
var
s1, s2, s3: string;
begin
{ operacje na stringach }
przetworz.s1:= s1;
przetworz.s2:= s2;
przetworz.s3:= s3;
end;

end.

Mam taki kod. Niestety fukcja zwraca tylko przetworz.s1 , mimo, ze wszystkie zmienne s1, s2, s3 zawieraja znaki. Dlaczego?

Nie kompiluje tez tego:

uses
unit2...;
var
prop : Tprop;
begin
Mod1:= Tmod1.Create;
prop:= Mod1.przetworz('sadasdsadsads',1):

kompilator pisze comapring signed and unsigned types. Co to znaczy?

0

Kod jest ok. Może te { operacje na stringach } są walnięte albo źle odczytujesz wynik ? Skorzystaj z debuggera albo wrzuć na końcu funkcji ShowMessage(s1 + #10#13 + s2 + #10#13 + s3);

0

Kod:
function Tmod1.przetworz(var ss: string; nr: word): TProp;

zrób ss bez var

0

bez var nic nie zmienia po ''{ operacje na stringach }" gdy daje pokazywanie stringow to wszystkie maja dane, po tym:
przetworz.s1:= s1;
przetworz.s2:= s2;
przetworz.s3:= s3;
gdy napisze showmessage( przetworz.s1+przetworz.s2+przetworz.s3); juz nie da sie skompilowac.
funkcje to odczytuje w innym unicie. mam tak samo zadeklarowany typ, przypisana do niego zmienna prop i chcialem po prostu prop:=Mod1.przetworz(html, licz2); Ale tak wyswietla mi blad o signed i unskigned.

Wiec mam
prop.s1:=Mod1.przetworz(html, licz2).s1;
prop.s2:=Mod1.przetworz(html, licz2).s2;
prop.s3:=Mod1.przetworz(html, licz2).s3;

ale tylko s1 ma dane wtedy...

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