RSE hat geschrieben:beim 2. Argument aus arb2 plötzlich arg2 geworden ist[...]
berichtigt
Euklid hat geschrieben:gehören diese Aufrufkonventionen hinter die Deklaration der Funktion/Prozedur.
Genau da hab ich sie ja hingeschrieben. In der FreePascal-Referenz hab ich nicht mehr als du darüber gefunden.
Aber Folgendes kann mein FPC 2.2.0 nicht compilieren:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
function test(arg1, arg2: Integer): Integer; stdcall;
implementation
function test ( arg1, arg2: Integer ) : Integer;
begin
end;
end.
Fehlermeldung(en):
Unit1.pp(11,10) Error: Calling convention doesn't match forward
Unit1.pp(7,10) Hint: Found declaration: test(LongInt, LongInt):LongInt;StdCall
Daraus schließe ich, dass sie erforderlich sind und nicht einfach ignoriert werden
So, und nun zu pluto:
Was du genau meinst, kann ich deinem text nicht entnehmen, beispielcode wäre super...
Wenn das mit der Sichtbarkeit der Felder/methoden zusammenhängt, bei
Wikipedia gibts 'ne schöne Tabelle (leider für Delphi, aber in FreePascel dürfte das ähnlich sein).
Zu deinen Indizes:
Code: Alles auswählen
property TestItem[index:Integer]:Boolean index 0 read GetTestItem write SettTestItem
bei mir ist recht interessant:
Code: Alles auswählen
// aus
TMyClas = class
private
public
property test[Index: Integer]: Integer index 0 read GetInt write SetInt;
end;
// wird
TMyClas = class
private
function GetInt ( AIndex: integer; Index: Integer ) : Integer;
procedure SetInt ( AIndex: integer; Index: Integer; const AValue: Integer
) ;
public
property test[Index: Integer]: Integer index 0 read GetInt write SetInt;
end;
Was da wo übergeben wird habe ich aber nicht überprüft. Sonderbar ist auch, dass er einmal "
integer" und einmal "
Integer" schreibt.
pluto hat geschrieben:Das könnte aber auch an mir liegen da ich ja ein index ändern könnte.... sehe ich das richtig ?
Das erste "index" ist ein einfacher Bezeichner, kann also geändert werden, während der zweite ein Sschlüsselwort ist und nicht geändert werden kann. Also gehe ich davon aus, dass in meinem Beispiel oben das AIndex dem Index der Array-Eigenschaft entspricht (also das Index in den eckigen Klammern).
pluto hat geschrieben:Aber auch die Code-Tools könnten ja drauf achten, und die Parameter entsprechend ändern !
Das wird sehr, sehr viel aufwand, da du überprüfen musst, ob dieser oder jener Parameter schon irgendwo deklariert ist....
Ich hoffe die Verwirrung ist nun komplett verwirrt
Socke