Witam, mam mala prosbe : czy ktos moglby przejrzec ponizszy kod i zastanowic sie co by zmienic aby faktycznie procedurka usuwala duplikaty, niby jest OK bo sie compiluje ale nie chce tego robic :
PROGRAM slownik;
USES
crt;
CONST
baza = 'c:\tp\prog2\slowa.txt' ;
litery = ['a'..'z','A'..'Z'];
liczba_rekordow = 50;
VAR
G : TOsobaWsk;
Wyrazy : TTablicaWyrazow;
Wyraz,
Nazwa : string;
Plik : Text;
Linia ,
Ilosc ,
I ,
Indeks : Integer;
TYPE
TSlowaWsk = ^TSlowa;
TSlowa = record
wyraz : string;
next : TSlowaWsk;
END;
Type
Plik_slow = record
slo : string ;
slo2 : string;
end;
type
Plinia=^Tlinia;
Tlinia=record
nlinia:string;
nast:Plinia;
end;
TTablicaWyrazow = array[1..liczba_rekordow] of TSlowa;
PROCEDURE duplikat(var glowa : TSlowaWsk);
VAR
pom : TSlowaWsk;
pom2 : TSlowaWsk;
wsk : TSlowaWsk;
BEGIN
assign(plik,baza);
Reset(plik);
if IOresult=0 then begin
indeks := 0;
while not eof(plik) do begin
inc(indeks);
readln(plik, wyrazy[indeks].wyraz);
end;
ilosc := indeks;
end
else begin
rewrite(plik);
ilosc:=0;
end;
pom := glowa^.next;
repeat
pom2 := pom;
repeat
if (pom2^.next <> nil) and (pom^.wyraz = pom2^.next^.wyraz) then
begin
wsk := pom2^.next;
pom2^.next := wsk^.next;
dispose(wsk);
end
else
pom2 := pom2^.next;
until pom2 = nil;
pom := pom^.next;
until pom = nil;
END;
PROCEDURE inicjuj(var glowa : TOsobaWsk);
BEGIN
new(glowa);
glowa^.next := nil;
END;
PROCEDURE WstawNaPocz(var glowa : TOsobaWsk; liczba : string);
VAR
pom : TOsobaWsk;
ins : integer;
BEGIN
new(pom);
pom^.wyraz := liczba; {wyrazy[ins].wyraz; <- nie dziala z tym}
pom^.next := nil;
if glowa^.next <> nil then
pom^.next := glowa^.next;
glowa^.next := pom;
END;
{ wyswietlanie listy z wartownikiem}
PROCEDURE PokazListe(glowa : TOsobaWsk);
VAR
pom : TOsobaWsk;
BEGIN
pom:=glowa^.next;
while pom <> nil do
begin
{ write(pom^.wyraz,' ');}
pom:=pom^.next;
end;
END;
moj kompilator to : Turbo Pacal 7.0
<font color="blue">//uzywaj tagow < delphi > - lofix</span>