szyfrowanie i problem z tablicą

0

procedura na podstawie artu

procedure deszyfruj;
var
S : String;
Len : Integer;
I : Integer;
Code : String;
begin
Form1.Memo3.Lines:= Form1.Memo2.Lines;
S := Form1.Memo2.Lines.Text;
Len := Length(S);
for I := 1 to Len do
begin
 case (S[i]) of

tab[0]:
 begin
  Code := Code + 'a';
 end;

 else
 Code := Code + S[i];
end;
Form1.Memo3.Clear; // czyść
Form1.Memo3.SelText := Code;
end;

dalczego mi to nie chodzi(chodzi o fragment tab[0]:) [cya]

0

Jaki błąd? Coś takiego:

[Error] Nazwa_unitu.pas(nr_linii): Constant expression expected

? Po przetłumaczeniu - wymagane jest stałe wyrażenie (stała, nie zmienna).

0

A może byś podał co to jest za tablica i <ort>w ogóle</ort>??

// W OGÓLE!! za pisanie w ogóle i w ogóle będę mordować - ŁF

0

tab: array[0..30]of String

0


[Error] Nazwa_unitu.pas(nr_linii): Constant expression expected

? Po przetłumaczeniu - wymagane jest stałe wyrażenie (stała, nie zmienna).

Chodzi o

case zmienna of
stała1:ble;
stała2:ble;
end;

Stała ma być stałą, nie zmienną, jak w twoim przypadku. Poza tym case nie działa dla stringów.

// tam nie ma stringa, jest znak. btw - kto robi case z dwoma argumentami?? - ŁF

//

tab: array[0..30]of String...

case (S[i]) of
  tab[0]:Code := Code + 'a';
  else Code := Code + S[i];
end;  // przeformatowalem trochę, żeby było czytelniejsze

A tab[0] to cio ? A i przy okazji LF ma częściowo rację... s[i] to char, tab[0] to string. Case of wymaga tych samych typów dla zmiennej i stałych. Po prostu wstaw if'a zamiast case of.

if (s[i]=tab[0]) // teraz pójdzie
  then Code := Code + 'a'
  else Code := Code + S[i];

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