Gdy robie tak
case Socket.ReceiveText of
'R' : MyExitWindows(EWX_REBOOT);
'S' : MyExitWindows(EWX_POWEROFF);
end;
wyswietla mi blad 'Ordinal type requaired'! W czym jest moj blad? :-/
Chodzi o to, że przy case musi być typ porządkowy, a string takim typem nie jest. Już łatwiej zrobić to po numerach znaków.
Chodzi o to, że przy case musi być typ porządkowy, a string takim typem nie jest. Już łatwiej zrobić to po numerach znaków.
Nie sądzę aby w ten sposób to było możliwe poniewarz case of wymaga albo liczby albo pojedynczego znaku nawet jezeli string zawiera tylko jeden znak nie mozna tego uzyc w takiej formie.
Nie uda się rownież w ten sposób: case MojString[1] of a to dla tego że nadal traktuje to jako string. Prędzej trzeba tą pierwsza (lub N-tą) literę najpierw przypisać zmiennej typu char a potem sprawdzać case'm np:
Znak := Socket.ReceiveText[1]; //w nawiasie wpisz znak ktory chcesz porownac 1 oznacza pierwszy znak a 0 oznacza liczbe (!) znakow w stringu (przynajmniej w tym typu shortstring)
Case Znak of
...
end;
To działa sprawdzałem.
Nie sądzę aby w ten sposób to było możliwe poniewarz case of wymaga albo liczby albo pojedynczego znaku
Dowolny typ porządkowy !! Nie koniecznie liczba lub znak.
Jeżeli zadeklaruję sobie jakiś typ wyliczeniowy:
type DniTyg = (pon, wt, sr, cz, pt, so, ni);
var
Dzien: DniTyg;
to mogę zrobić tak:
case Dzien of
pon: ...
Nie uda się rownież w ten sposób: case MojString[1] of a to dla tego że nadal traktuje to jako string.
Oj troszeczkę oszukujesz:
case Socket.ReceiveText[1] of
'R' : MyExitWindows(EWX_REBOOT);
'S' : MyExitWindows(EWX_POWEROFF);
end;
Jezeli odwołujesz się do n-tego elementu tablicy to też to traktuje jak tablicę? Chyba nie :) String nie jest niczym więcej niż:
type string = packed array of Char;
(oczywiście chodzi o AnsiString. ShortString jest trochę inne)
Tak... to czemu mi, kiedy spróbowalem z Label1.Caption[1] wywalił błąd niezgodności [???]
A co do własnego typu wyliczniowego to przyznaję rację nie pomyślałem o tym. [glowa]
Chylę czoła [prosze]
[dopisane]
Chylę czoła po raz drugi [prosze]
Znalazłem co nie tak robiłem mianowicie próbowałem porównać do pustego stringa czyli '' (nie mylic z cudzysłowem !!)