Pascal IDE miért nem működik ?
Erről az oldaltól: [link] írnám be a példákat Free Pascalba vagy androidos Pascal N-IDE-be, de a 17. példától kezdve nem futnak le. Tehát elsőtől 17-ig igen, utána már nem: vagy hibát ír ki vagy nem hajtja végre a feladatot.
Ezen az online felületen viszont működik minden: [link]
A gond az, hogy ez utóbbit mobilon nagyon nehézkes kezelni.
A karakterláncok menüpontnál van.
Konkrétan így néz ki:
program Pelda17;
var s:string;
i:integer;
begin
write('Irj be egy mondatot: ');
readln(s);
for i:=1 to length(s) do
s[i]:=upcase(s[i]);
writeln(s);
end.
#1: Lényegtelen miért tanul Pascal-t.
A 17. példa egyébként itt:
van (a kérdezőnek az azt követő példától kezdve van problémája).
Kérdező: milyen hibát ír ki, illetve mit értesz azon, hogy "nem hajtja végre a feladatot"?
function SUpCase(s: string): string;
var
i : integer;
begin
SUpCase := str;
for i := 1 to length(s) do
if (s[i] >= 'a') and (s[i] <= 'z') then SUpCase[i] := Chr(Ord(s[i]) - 32);
end;
function SUpCase(s: string): string;
var
i : integer;
begin
SUpCase := s;
for i := 1 to length(s) do
if (s[i] >= 'a') and (s[i] <= 'z') then SUpCase[i] := Chr(Ord(s[i]) - 32);
end;
Tényleg elárulhatnád, hogy mi a hibaüzenet, ennek hiányában legfeljebb csak tippelni tudunk.
Így látatlanból - a beírt példából kiindulva - úgy sejtem, a sztringkezeléssel lesznek a problémák. Pascalban alapvetően két fajta szöveg létezik: a Pascal-stílusú, és a C-stílusú. Előbbire jellemző, hogy karaktertömbként is kezelhető, ezáltal - ahogy a leírt példában is látszik - egyszerű indexeléssel el lehet érni az elemeit. A hossza pedig a "tömb" "nulladik" elemében tárolódik. Nagy hátránya, hogy maximálisan 255 karakter hosszú lehet.
A C-stílusú sztringek viszont másmilyenek. Közvetlenül nem ismert a hosszuk, és nem is engedi a fordító tömbként elérni az elemeiket. Előnyük, hogy nincs a 255 karakteres hossz-korlát, szinte "korlátlan" hosszúságúak lehetnek (a valódi maximális hossz implementáció- és architektúrafüggő, és függ még a szabad memória nagyságától is), a sztring végét pedig "null" karakter jelzi. (Hátrány, hogy az ilyen szövegekben nem lehet nullás kódú karakter, bár ez nem is gyakran szokott előfordulni.)
Az, hogy az adott fordító melyiket használja alapértelmezésben, az magától a fordítótól, és a beállításaitól is függ. Ha biztosra akarsz menni, Pascal-stílusú sztingekhez FreePascal alatt ShortString típust használj! (Vagy add meg a {$H-} fordítási direktívát a program elején!) Ez garantáltan mindig a klasszikus, Pascal-stílusú sztingként viselkedik. A C.stílusú, nulla-végű sztringekhez pedig AnsiString típust! (Vagy add meg a {$H+} fordítási direktívát a program elején!)
Az egészben az a hihetetlen, hogy a közzétett programkód működik, akár online compilerben tesztelhető is.
Lefordul, azt csinálja, amit kell.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!