A ty dalej swoje.. Nie został rozwiązany, bo ja chce wiedzieć gdzie w mojej pętli jest błąd.. I dlaczego ma być tak a nie inaczej.. -
Problem jest w tym, że korzystałeś z procedury Val
, która nie służy do sprawdzenia czy w tekstcie nie ma w ogóle cyfr, tylko do tego czy dany tekst jest liczbą całkowitą. Czyli zadziała na pewno dla tekstu do 11 znaków, ponieważ Low(Integer) = -2147483648, a High(Integer) = 2147483647. Nie potrzebujesz wartości wynikowej typu Integer z pobranego tekstu, a jak rozumiem chcesz sprawdzić czy tekst nie zawiera w ogółe cyfr arabskich. Dlatego najlepiej napisać sobie do tego celu prostą funkcję, która pokazałem wcześniej. Poza tym taki kod jak poniżej również zwróci w zmiennej Code
0, bo procedura Val
pozwala też na przekonwertowanie wartości szesnastkowej na dziesiętną. A jak widzisz tekst $C
na pewno nie zawiera cyfry arabskiej. A programista powinien się starać żeby jego kod był możliwie "idiotoodporny", a należy przewidzieć że zdarzy się użytkownik, który może chcieć sobie wpisać tekst zaczynający się od znaku $
i nie zostanie on przez program dopuszczony, a według założeń programisty powinien. I na przyszłośc radzę grzeczniej, a nie teksty w stylu "a ty dalej swoje". Ja dalej swoje będę powtarzał. Nie znasz podstaw i nie chcesz się ich chyba nauczyć. A jak się Tobie pisze, że zastosowanie procedury Val
w tym przypadku jest błędem to niestety wtedy znowu "ty dalej swoje". Sformatuj swój kod porządnie i go przeanalizuj linijka po linijce. W razie czego zapoznaj się z Debuggerem i tym jak go używać. Poza tym dostałeś gotowy kod, to sobie go przeanalizuj. Twój kod, pod którym @Patryk27 napisał, ze to "katastrofa" na prawdę taką katastrofą był, nie tylko ze względu na brak formatowania. Był nielogiczny. Coś tam po omacku "dłubałeś", sam chyba nie bardzo wiedziałeś co chciałeś osiągnąć. Jeśli nie pasuje Tobie moje rozwiązanie to ok, nie ma przymusu. Rób po swojemu, ale odrzucając sugestie z rozwiązaniem to się raczej poprawnych nawyków programistycznych i pisania prawidłowego kodu - według mnie - nie nauczysz :/ Wiem gotowcami się Was leniuchów krzywdzi, ale jak widze jak coś tam dłubiesz, motasz się, nie do końca wiadomo co chcesz osiągnąc, bo nie nakreśliłeś tego w pierwszym postcie wątku, to wziąłem szybko "machnąłem" przykład żeby Tobie pokazać jak to na przykład powinno wyglądać prawidłowo.
//...
var
S : string;
V, Code : integer;
begin
S := '$C';
Val(S, V, Code);
Writeln(Code);
Readln;
end.
//...