Autor Beitrag
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 378
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Di 17.04.12 23:58 
Hallo,

ich möchte aus einer Library (CPort) eine bestimmte Procedure nutzen, erhalte aber immer den Fehler "EAbstractError". Da ich den Quellcode der Library habe, konnte ich den Fehler auch in dem dargestellten Code-Schnippsel reproduzieren. Der Fehler passiert bei dem Assign. Ich habe schon versucht, hsl als globale Variable zu deklarieren, hsl als TStrimgs zu definieren oder auch hs als VAR zu übergeben. Hat alles keinen Einfluss. Hat jemand einen Tipp?

Gruß GuaAcke
(Delphi 7)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
{ Sinngemäß mein Programm }
{ ======================= }
PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR
  hs: tstrings;
  i: integer;
BEGIN
  hs := tstrings.Create;
  fuelle(hs);
  Memo1.Clear;
  FOR i := 0 TO hs.Count - 1 DO
    Memo1.Lines.Add(hs[i]);
  hs.Free;
END;

{ Sinngemäß die Library Procedure }
{ =============================== }
PROCEDURE TForm1.fuelle(hs: tstrings);
VAR
  hsl: TStringList;
BEGIN
  hsl := TStringList.Create;
  hsl.Add('aaaa');
  hsl.Add('cccc');
  hsl.Add('bbbb');
  hs.Assign(hsl);
  hsl.Free;
END;
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 434
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Mi 18.04.12 00:29 
Ich habs mal mit D6 geprüft.

Das Problem liegt anscheinend an folgendem:

Es ist nicht möglich einem tstrings ein tstringlist zu "assignen":
fuelle aus cport ruft das assign der übergebenen tstrings auf. dort wird wiederum clear aufgerufen was den abstract error erzeugt.
Versuch es einfach mal damit in Deinem button1click:

hs := tstringlist.Create;
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 18.04.12 00:50 
Moin!

TStrings ist eine abstrakte Basisklasse, die nicht selbst instantiiert werden darf (steht auch so in der DOH :les:), es ist also kein Wunder, dass es so nicht geht:
user profile iconGuaAck hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
{ Sinngemäß mein Programm }
{ ======================= }
PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR
  hs: tstrings;
  i: integer;
BEGIN
  hs := tstrings.Create;
Lösung hast du schon bekommen, z.B. eine TStringList nehmen. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
GuaAck Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 378
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Mi 18.04.12 19:41 
Danke Narses,

in der Delphi-Hilfe habe ich jetzt folgendes Konstrukt gefunden, was geht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
VAR
hs:TStrings;

BEGIN
hs:=TstringList.create;


Damit geht es, Danke an alle,
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 19.04.12 09:30 
Moin!

user profile iconGuaAck hat folgendes geschrieben Zum zitierten Posting springen:
in der Delphi-Hilfe habe ich jetzt folgendes Konstrukt gefunden, was geht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
VAR
hs:TStrings;

BEGIN
hs:=TstringList.create;
"Geht doch" ist ein schlechter Ansatz. :? Ich muss dir davon aber auch abraten, trotz "geht doch". ;) Wenn du eine TStringList instantiierst, dann deklatiere sie auch so, sonst kannst du ja nichtmal ohne Typecast auf die Eigenschaften und Methoden des Objektes zugreifen! :idea: Alles andere macht nur sehr wenig bis keinen Sinn. :nixweiss:

Also:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var
  hs: TStringList;

begin
  hs := TStringList.Create;
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.