Karaktere-kate baten luzera fisikoa (luzera maximoa) mugatuta dago eta hori gainditzean ez da errorerik gertatzen ez exekuzio-denboran eta are gutxiago konpilazio-denboran. Muga gainditzean gainerako karaktereak ez dira gordetzen. Adibidez, hori gerta daiteke insert() prozedura aplikatzean:
{
Hasierako katearen itxura:
- Izena eta abizena
- Izena eta abizena letra larriz hasten dira
- Adibidez: IbanIbabe
Bukaerako katearen itxura:
- Izena eta abizena
- Izena eta abizena letra larriz hasten dira
- Izena eta abizenaren artean 'txu' txikigarria
- Adibidez: IbantxuIbabe
}
program txu_Txikigarria;
uses
crt;
const
iMAX = 15; { sarritan txikiegia gerta daiteke }
type
tsKatea = string[iMAX];
function fniAbizenaNonHastenDa(sIzenAbizena: tsKatea) : integer;
var
iKont: integer;
begin
iKont := 2; (* larria delako, ez konputatu izenaren lehen karakterea *)
while sIzenAbizena[iKont] > 'Z' do
iKont := iKont + 1;
fniAbizenaNonHastenDa := iKont;
end;
var
sIzenAbizena: tsKatea;
iAbizenaNon: integer;
begin
clrscr;
writeln('//////////////////////////////////////');
writeln;
repeat
write('Izena eta abizena eman (adibidez, IbanIbabe): ');
readln(sIzenAbizena);
if length(sIzenAbizena) > iMAX - length('txu') then
writeln('Datu horientzat ez dago toki nahikorik memorian!!!');
until length(sIzenAbizena) <= iMAX - length('txu');
writeln;
writeln(' Datua hauxe da: ///', sIzenAbizena, '///');
writeln('Luzera efektiboa: ///123456789012345///');
writeln;
{ Abizenaren lehen karakterea letra larria da }
iAbizenaNon := fniAbizenaNonHastenDa(sIzenAbizena);
insert('txu', sIzenAbizena, iAbizenaNon);
writeln(' Emaitza hau da: ///', sIzenAbizena, '///');
writeln('Luzera efektiboa: ///123456789012345///');
writeln;
writeln('//////////////////////////////////////');
readln;
end.
iruzkinik ez:
Argitaratu iruzkina