Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Alles richtig, trotzdem "Incompatible Types TString List and Integer"? (https://www.delphipraxis.net/186535-alles-richtig-trotzdem-incompatible-types-tstring-list-integer.html)

pmros 9. Sep 2015 21:05

Delphi-Version: 7

Alles richtig, trotzdem "Incompatible Types TString List and Integer"?
 
Kann da mal schnell jemand drüber schauen und mir sagen, warum

Delphi-Quellcode:
function commands (request:string):TStringList; stdcall;
var
s1, s2, s3: String;
Liste: TStringList;

begin
s1:='H';
s2:='G0';
s3:='G1';
Liste := TStringList.Create;
Liste:=
    Liste.Add(s1);
    Liste.Add(s2);
    Liste.Add(s3);

result:=Liste;
end;

exports commands;

Das hier ausgibt?!:

Code:
[Error] Project2.dpr(24): Incompatible types: 'TStringList' and 'Integer'
Ich habe doch s1 - s3 als strings definiert und nicht als integer, wo ist denn das Problem?

Luckie 9. Sep 2015 21:09

AW: Alles richtig, trotzdem "Incompatible Types TString List and Integer"?
 
Du willst ein Objekt aus einer DLL zurückgeben? Das wird so nichts. Informiere dich mal über "DLL und Objekte".

BadenPower 9. Sep 2015 21:12

AW: Alles richtig, trotzdem "Incompatible Types TString List and Integer"?
 
Zitat:

Zitat von pmros (Beitrag 1315355)
Delphi-Quellcode:
function commands (request:string):TStringList; stdcall;
var
s1, s2, s3: String;
Liste: TStringList;

begin
s1:='H';
s2:='G0';
s3:='G1';
Liste := TStringList.Create;
Liste:= //schau mal hier
    Liste.Add(s1); // und hier
    Liste.Add(s2);
    Liste.Add(s3);

result:=Liste;
end;

exports commands;

Du weist der Stringliste mit dem Namen "Liste" den Rückgabewert der Funktion Liste.Add zu. Und dies ist der Index des eingefügten Wertes, also ein Integer, denn die markierten Zeilen Deines Quelltextes ergeben:

Delphi-Quellcode:

Liste := Liste.Add(s1);

Ob das mit der Übergabe funktioniert, wie Luckie moniert, hat ersteinmal nichts mit dem jetzt erzeugten Fehler zu tun.

mkinzler 9. Sep 2015 21:15

AW: Alles richtig, trotzdem "Incompatible Types TString List and Integer"?
 
Das auch, aber der Fehler ist in hier:
Delphi-Quellcode:
Liste:=
    Liste.Add(s1);
Liste.Add gibt den Index des neu hinzugefügten Eintrages zurück ( ein Integer) welchen Du dann der Liste zuweisen willst.

pmros 9. Sep 2015 21:16

AW: Alles richtig, trotzdem "Incompatible Types TString List and Integer"?
 
Zitat:

Zitat von BadenPower (Beitrag 1315357)
Du weist der Stringliste mit dem Namen "Liste" den Rückgabewert der Funktion Liste.Add zu. Und dies ist der Index des eingefügten Wertes, also ein Integer, denn die markierten Zeilen Deines Quelltextes ergeben:

Ob das mit der Übergabe funktioniert, wie Luckie moniert, hat ersteinmal nichts mit dem jetzt erzeugten Fehler zu tun.

Gnah, natürlich. Übersehen. Vielen Dank. Und ja, doch. Es funktioniert jetzt. Ich kann die Stringliste übergeben.

nahpets 9. Sep 2015 21:17

AW: Alles richtig, trotzdem "Incompatible Types TString List and Integer"?
 
Auch wenn ich nicht weiß, ob mein Vorschlag auch nur ansatzweise sinnvoll erscheinen könnte, vermutlich hätte ich es so gemacht:
Delphi-Quellcode:
function commands (request:string):TStringList; stdcall;
begin
Result := TStringList.Create;
Result.Add('H');
Result.Add('G0');
Result.Add('G1');
end;
Was soll denn hier passieren?
Delphi-Quellcode:
Liste:=
    Liste.Add(s1);
Add ist eine Methode von Liste, aber die weist man doch nicht bei dem Aufruf gleichzeitig wieder der Liste zu?

Auch dashier verstehe ich nicht:
Delphi-Quellcode:
result:=Liste;
mit einem
Delphi-Quellcode:
result.AddStrings(Liste);
und dem dann zwingend folgende
Delphi-Quellcode:
Liste.Free
könnte ich ja noch leben.

Luckie 9. Sep 2015 21:18

AW: Alles richtig, trotzdem "Incompatible Types TString List and Integer"?
 
Zitat:

Zitat von BadenPower (Beitrag 1315357)
Ob das mit der Übergabe funktioniert, wie Luckie moniert, hat ersteinmal nichts mit dem jetzt erzeugten Fehler zu tun.

Ich als Visionär sehe nur das große Ganze. :mrgreen:

Luckie 9. Sep 2015 21:19

AW: Alles richtig, trotzdem "Incompatible Types TString List and Integer"?
 
Zitat:

Zitat von pmros (Beitrag 1315359)
Ich kann die Stringliste übergeben.

Das dürfte aber nur gehen, wenn du die Sharemem.dll einbindest.

nahpets 9. Sep 2015 21:21

AW: Alles richtig, trotzdem "Incompatible Types TString List and Integer"?
 
Wann, und wie, wenn überhaupt, wird die Stringliste denn wieder freigegeben?

BadenPower 9. Sep 2015 21:23

AW: Alles richtig, trotzdem "Incompatible Types TString List and Integer"?
 
Zitat:

Zitat von Luckie (Beitrag 1315361)
Zitat:

Zitat von BadenPower (Beitrag 1315357)
Ob das mit der Übergabe funktioniert, wie Luckie moniert, hat ersteinmal nichts mit dem jetzt erzeugten Fehler zu tun.

Ich als Visionär sehe nur das große Ganze. :mrgreen:

Dafür war ich mal schneller als mkinzler.

Aber auch der Einwand von nahpets hat seine Berechtigung und sollte berücksichtigt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz