Ovako... tvoj program radi super ako zelis da proveravas koliko puta je korisnik ukucao neko slovo ili znak... a sta ako treba da se proveri koliko je slova 'a' bilo u nekom strnigu koji se ucitava iz fajla? To tvoj program ne moze da uradi, zar ne?

Procedura koju sam napisao je vrlo jednostavna... koristi funkciju PosEx (nisam bas siguran da je ima u Pascal-u... ima je u Delphi-u) koja vraca redni broj podstring-a u string-u pocevsi sa proverom od odredjenog mesta. Funkcija Pos (postoji i u Pascal-u i u Delphi-u) radi isto sto i PosEx samo sto uvek pocinje od pocetka.
Code:
function BrojZnakova(AChar: Char; AStr: String): Integer;
var
I: Integer;
begin
Result := 0; // Rezultat funkcije je 0
I := 1; // Pocinjemo da trazimo od prvog karaktera
while PosEx(AChar, AStr, I) <> 0 do // Ako je PosEx <> 0 nasli smo trazeni karakter
begin
Inc(Result); // Povecavamo rezultat za jedan jer smo pronasli jedan trazeni karakter
I := PosEx(AChar, AStr, I) + 1; // Sledeci put trazimo od mesta za 1 veceg od mesta na kojem smo ovog puta nasli trazeni karakter
end;
end;
To je cela mudrost.
Ako u Pascal-u ne postoji PosEx funkcija ovo se moze uraditi i sa obicnom Pos funkcijom
Code:
function BrojZnakova(AChar: Char; AStr: String): Integer;
begin
Result := 0; // Rezultat funkcije je 0
while Pos(AChar, AStr) <> 0 do // Ako je Pos <> 0 nasli smo trazeni karakter
begin
Inc(Result); // Povecavamo rezultat za jedan jer smo pronasli jedan trazeni karakter
Delete(AStr, Pos(AChar, AStr), 1); // Brisemo karakter koji smo nasli da ga ne pronadjemo dva puta
end;
end;
Ovako se radi sa Pos komandom... string koji prosledimo funkciji nece biti promenjen jer je AStr ustvari kopija string-a koji dodeljujemo funkciji.
Nadam se da je sad sve jasno
