versuche gerade unter FPC mit Stringlisten zu arbeiten.
Habe die Unit "classes" in die uses-Zeile eingefügt, in der Variablen-Deklaration strlist vom Typ TStrings definiert und im Hauptprogamm die Methoden strlist.create, strlist.Add(s1) und strlist.free benutzt. Der Kompiler bringt eine Warnung:
Code: Alles auswählen
sort2.pas(26,17) Warning: Constructing a class "TStrings" with abstract methods
Nach dem Start des Programmes kommt dann die Fehlermeldung:
Code: Alles auswählen
An unhandled exception occurred at $08048278 :
EAccessViolation : Access violation $08048278
Hier der Beispielcode:
Code: Alles auswählen
program sort2;
uses crt,classes;
const max = 100;
var s1 :string;
i :integer;
strlist :TStrings;
function str5 :string;
var s :string[5];
a,i :byte;
ch :char;
begin
s:='';
for i:=1 to 5 do begin
a:=random(26)+65;
ch:=chr(a);
s:=s+ch;
end; {for i}
str5:=s;
end; {str5}
begin
randomize;
ClrScr;
strlist.create;
for i:=1 to max do begin
s1:=str5;
writeln(i:6,' ',s1);
strlist.add(s1);
end;
strlist.free;
end.
Was mach ich falsch?
Gruß, Linkat
PS: wenn ich die Variable strlist anstatt TStrings dem Typ TStringlist zuordne, ist das gleiche Problem.
Lazarus 0.9.22 unter Suse 10.0 bzw. 10.2