fastman92
(fastman92)
22 Styczeń 2011 14:08
#1
Chce aby moja funkcja z Pascala miała parameters globalną zmienną, którą może normalnie modyfikować.
W PHP, C++ jest to referencja i znak & przy parametrze funkcji:
bool Increase_string (char &crack, int length)
Wtedy crack może być normalnie modyfikowany i ma wpływ na crack poza. Mam:
function Permutate_string (Text : string; Current_length : integer) : boolean;
Chce, aby zmienna Text miała referencje w funkcji, tak jak w PHP, C++.
Jako return chce true or false…
Pascal function reference w google i nie znalazłem nic ciekawego co do referencji.
nr47
(Sawyer47)
22 Styczeń 2011 14:10
#2
var name : type
10 sekund szukania w Google
Jest również w trzecim linki pod hasłem “Pascal function reference” w Google
fastman92
(fastman92)
22 Styczeń 2011 14:23
#3
Możesz podać link do tej strony? Trzecią mam http://www.functionx.com/objectpascal/Lesson14.htm
Próbowałem tak:
function Permutate_string (var Text : String; Current_length : integer) : boolean;
Ale wtedy types of actual and formal var parameters must be identical
nr47
(Sawyer47)
22 Styczeń 2011 14:26
#4
Pokaż jak wywołujesz tę funkcję.
fastman92
(fastman92)
22 Styczeń 2011 14:28
#5
var
Start_string : string[20];
String_length : byte;
Permutate_string (Start_string, String_length);
nr47
(Sawyer47)
22 Styczeń 2011 14:34
#6
Nie piszę w Pascalu, ale na podstawie komunikatu wnioskuję, że typ musi się dokładnie zgadzać przy przekazywaniu przez referencje, a string[20] to nie to samo co string.
fastman92
(fastman92)
22 Styczeń 2011 14:37
#7
Tylko, że to się kompiluje gdy jest tak:
function Permutate_string (Text : String; Current_length : integer) : boolean;
Bez var przed Text. Tylko wtedy nie ma referencji.
nr47
(Sawyer47)
22 Styczeń 2011 14:49
#8
Powtórzę, nie piszę w Pascalu, ale to jest całkiem sensowne – gdy argument jest kopiowany można go wydłużyć bo i tak ma swoją pamięć o odpowiednim rozmiarze. Natomiast przez referencję modyfikujesz oryginalną pamięć, więc typ musi się zgadzać dokładnie (abyś nie operował na pamięci nienależącej do przekazanej zmiennej).
fastman92
(fastman92)
22 Styczeń 2011 14:52
#9
Zmieniłem z string[20] na string:
var
Start_string : string;
Potem na string tylko:
function Permutate_string (var Text : String; Current_length : integer) : boolean;
Razem z var. Działa. Text w tej funkcji ma referencje. Problem rozwiązany.
Jednak wcześniej miałem Start_string : string[20] i w funkcji string[20] i nie kompilowało się.
nr47
(Sawyer47)
22 Styczeń 2011 15:00
#10
A jaki był komunikat w takim przypadku?
fastman92
(fastman92)
22 Styczeń 2011 15:02
#11
Types of actual and formal var parameters must be identical
_alex
([alex])
22 Styczeń 2011 15:51
#12
To problem w miejscu z którego wywołujesz:
var S:String;
S:=‘abc’;
Permutate_string(S,3); // tak można
Permutate_string(‘abc’,3); // a tu błąd
fastman92
(fastman92)
23 Styczeń 2011 12:20
#13
Jak można dostać Unix Timestamp do variable w Pascalu? Nie moge tego znaleźć, tylko do daty, godzin, minut, a nie sekund since 1970.
Now variable wygląda, że daje jakieś unexpected values takie jak: 4.056655644591E+0004 zwiększające się z czasem.