AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi die aufzurufende funktion wurde vom linker entfernt
Thema durchsuchen
Ansicht
Themen-Optionen

die aufzurufende funktion wurde vom linker entfernt

Ein Thema von EWeiss · begonnen am 1. Mai 2017 · letzter Beitrag vom 2. Mai 2017
Antwort Antwort
Seite 1 von 7  1 23     Letzte »    
EWeiss
(Gast)

n/a Beiträge
 
#1

die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 16:04
Ja so einen Thread gibt es schon
Bekomme langsam die Krise hier.

So eine Meldung hatte ich vorher noch nie.
Dadurch bedingt funktioniert die Classe nicht mehr.
Delphi-Quellcode:
unit uSprite;

interface
uses Windows, Classes, Messages, SysUtils, Graphics, uGlobal, SKAeroAPI;

const
  ID_LEFT = -1;
  ID_RIGHT = -2;
  ID_FLARE = -3;
  ID_BLUEFLARE = -4;
  ID_FOCUS = -5;
  SCALE_DEFAULT = 80;
  SCALE_MAX = 105;
  SCALE_STEP = 2;
  LBOUND = ID_FOCUS;

type
  TSprite = class(TObject)
  private
    FX: Integer;
    FY: Integer;
    FW: Integer;
    FH: Integer;
    FScale: Integer;
    FOpacity: Byte;
    FShellTo: string;
    FIconPath: PWideChar;
    FWorkDir: PWideChar;
    FUseLabel: string;
    FCmdLine: PWideChar;
    FShowCmd: LongInt;
    FBitmap: HBitmap;
    FVisible: Bool;
    function getH: Integer;
    function getW: Integer;
    function getX: Integer;
    function getY: Integer;
    procedure setH(const Value: Integer);
    procedure setW(const Value: Integer);
    procedure setX(const Value: Integer);
    procedure setY(const Value: Integer);
    function GetBitmap: HBitmap;
    function GetCmdLine: PWideChar;
    function GetIconPath: PWideChar;
    function GetOpacity: Byte;
    function GetScale: Integer;
    function GetShellTo: string;
    function GetShowCmd: LongInt;
    function GetUseLabel: string;
    function GetVisible: Bool;
    function GetWorkDir: PWideChar;
    procedure SetBitmap(const Value: HBitmap);
    procedure SetCmdLine(const Value: PWideChar);
    procedure SetIconPath(const Value: PWideChar);
    procedure SetOpacity(const Value: Byte);
    procedure SetScale(const Value: Integer);
    procedure SetShellTo(const Value: string);
    procedure SetShowCmd(const Value: LongInt);
    procedure SetUseLabel(const Value: string);
    procedure SetVisible(const Value: Bool);
    procedure SetWorkDir(const Value: PWideChar);
  public
    property x: Integer read getX write setX;
    property y: Integer read getY write setY;
    property w: Integer read getW write setW;
    property h: Integer read getH write setH;
    property Scale: Integer read GetScale write SetScale;
    property Opacity: Byte read GetOpacity write SetOpacity;
    property ShellTo: string read GetShellTo write SetShellTo;
    property IconPath: PWideChar read GetIconPath write SetIconPath;
    property WorkDir: PWideChar read GetWorkDir write SetWorkDir;
    property UseLabel: string read GetUseLabel write SetUseLabel;
    property CmdLine: PWideChar read GetCmdLine write SetCmdLine;
    property ShowCmd: LongInt read GetShowCmd write SetShowCmd;
    property Bitmap: HBitmap read GetBitmap write SetBitmap;
    property Visible: Bool read GetVisible write SetVisible;
  end;

  TNegativeArray = class(TObject)
  private
    Fdata : array of TSprite;
    FMaxValue: Integer;
    function getData(index : Integer) : TSprite; inline;
    procedure setData(index : Integer; aData : TSprite); inline;
    function GetMaxValue: Integer;
    procedure SetMaxValue(const Value: Integer);
  public
    Constructor Create(aLenght : Integer);
    Destructor Destroy; override;

    property Data[index: Integer]: TSprite read getData write setData; default;
    property MaxValue: Integer read GetMaxValue write SetMaxValue;
  end;

var
  gs: TNegativeArray;

implementation

{ TSprite }

function TSprite.GetBitmap: HBitmap;
begin

  Result := FBitmap;
end;

function TSprite.GetCmdLine: PWideChar;
begin

  Result := FCmdLine;
end;

function TSprite.getH: Integer;
begin

  Result := FH;
end;

function TSprite.GetIconPath: PWideChar;
begin

  Result := FIconPath;
end;

function TSprite.GetOpacity: Byte;
begin

  Result := FOpacity;
end;

function TSprite.GetScale: Integer;
begin

  Result := FScale;
end;

function TSprite.GetShellTo: string;
begin

  Result := FShellTo;
end;

function TSprite.GetShowCmd: LongInt;
begin

  Result := FShowCmd;
end;

function TSprite.GetUseLabel: string;
begin

  Result := FUseLabel;
end;

function TSprite.GetVisible: Bool;
begin

  Result := FVisible;
end;

function TSprite.getW: Integer;
begin

  Result := FW;
end;

function TSprite.GetWorkDir: PWideChar;
begin

  Result := FWorkDir;
end;

function TSprite.getX: Integer;
begin

  Result := FX;
end;

function TSprite.getY: Integer;
begin

  Result := FY;
end;

procedure TSprite.SetBitmap(const Value: HBitmap);
begin

  FBitmap := Value;
end;

procedure TSprite.SetCmdLine(const Value: PWideChar);
begin

  FCmdLine := Value;
end;

procedure TSprite.setH(const Value: Integer);
begin

  FH := Value;
end;

procedure TSprite.SetIconPath(const Value: PWideChar);
begin

  FIconPath := Value;
end;

procedure TSprite.SetOpacity(const Value: Byte);
begin

  FOpacity := Value;
end;

procedure TSprite.SetScale(const Value: Integer);
begin

  FScale := Value;
end;

procedure TSprite.SetShellTo(const Value: string);
begin

  FShellTo := Value;
end;

procedure TSprite.SetShowCmd(const Value: LongInt);
begin

  FShowCmd := Value;
end;

procedure TSprite.SetUseLabel(const Value: string);
begin

  FUseLabel := Value;
end;

procedure TSprite.SetVisible(const Value: Bool);
begin

  FVisible := Value;
end;

procedure TSprite.setW(const Value: Integer);
begin

  FW := Value;
end;

procedure TSprite.SetWorkDir(const Value: PWideChar);
begin

  FWorkDir := Value;
end;

procedure TSprite.setX(const Value: Integer);
begin

  FX := Value;
end;

procedure TSprite.setY(const Value: Integer);
begin

  FY := Value;
end;

{ TNegativeArray }

constructor TNegativeArray.Create(aLenght: Integer);
begin

  MaxValue := IIF(aLenght > 6, aLenght, 0);
  SetLength(fdata, aLenght);
end;

destructor TNegativeArray.Destroy;
begin

  inherited;
end;

function TNegativeArray.getData(index: Integer): TSprite;
begin
  assert(index <= 0);
  result := fData[abs(index)];
end;

function TNegativeArray.GetMaxValue: Integer;
begin

  Result := FMaxValue;
end;

procedure TNegativeArray.setData(index: Integer; aData: TSprite);
begin
  assert(index <= 0);
  fData[abs(index)] := aData;
end;

procedure TNegativeArray.SetMaxValue(const Value: Integer);
begin

  FMaxValue := Value;
end;

end.
warum wird setData und getData vom Linker ausgeschlossen?

Optimierung ist ausgeschaltet.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 16:10
Rufst Du die den von irgendwo auf?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 16:14
Rufst Du die den von irgendwo auf?
Delphi-Quellcode:
  gs := TNegativeArray.Create(6);

  gS[0].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'UseBack.png', width, height);
  gS[0].w := width;
  gS[0].h := height;
  gS[0].x := 0;
  gS[0].y := MAX(YMIN_SIZE - gS[0].h, 0);
  gS[0].opacity := 255;
FBitmap und die anderen Zuweisungen gehen nicht mehr weil der Linker set und getData entfernt hat.
Delphi-Quellcode:

constructor TNegativeArray.Create(aLenght: Integer);
begin

  MaxValue := IIF(aLenght > 6, aLenght, 0);
  SetLength(fdata, aLenght);
end;
fdata ?
Oder wo liegt der Fehler?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#4

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 16:37
Delphi-Quellcode:
  gs := TNegativeArray.Create(6);

  gS[0].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'UseBack.png', width, height);
  gS[0].w := width;
  gS[0].h := height;
  gS[0].x := 0;
  gS[0].y := MAX(YMIN_SIZE - gS[0].h, 0);
  gS[0].opacity := 255;
Ein gs[0] := TSprite.Create; machst du aber schon irgendwo?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 16:47
Delphi-Quellcode:
  gs := TNegativeArray.Create(6);

  gS[0].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'UseBack.png', width, height);
  gS[0].w := width;
  gS[0].h := height;
  gS[0].x := 0;
  gS[0].y := MAX(YMIN_SIZE - gS[0].h, 0);
  gS[0].opacity := 255;
Ein gs[0] := TSprite.Create; machst du aber schon irgendwo?
Nein mache ich nicht.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#6

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 16:51

Ein gs[0] := TSprite.Create; machst du aber schon irgendwo?
Nein mache ich nicht.
Wo soll die Objektinstanz dann herkommen?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 17:02

Ein gs[0] := TSprite.Create; machst du aber schon irgendwo?
Nein mache ich nicht.
Wo soll die Objektinstanz dann herkommen?
Jo schon richtig..
Nur dann müsste ich für jede FData[abs(index)] die Classe TSprite erstellen.
Irgendwie ist die Classe so nicht verwendbar. Hmmm..
So wie die aufgebaut ist kann ich NUR Negative werte inklusive 0 verwenden.
Die Icons haben aber Positive werte > max 100.


Delphi-Quellcode:
constructor TNegativeArray.Create(aLenght: Integer);
var
  i: Integer;
begin

  MaxValue := IIF(aLenght > 6, aLenght, 0); //Eigentlich quatsch da die Classe nur Negative werte unterstützt 7 wäre in dem Fall dann -7 und nicht 1 wie benötigt.
  SetLength(FData, aLenght);
  for i := 0 to aLenght do
    FData[i] := TSprite.create;
end;
Aber trotzdem wird set und getData entfernt.
Siehe Pic.


gruss

Geändert von EWeiss (11. Jul 2019 um 16:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 17:16
Wo wird denn GetData verwendet? Ich sehe nur die Verwendung von FData.

Wenn du die Property published machst, wird sie auch immer einkompiliert.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
bepe

Registriert seit: 17. Okt 2006
119 Beiträge
 
#9

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 17:20
Dein Problem ist das der Index nicht stimmt und somit dein Assertion auslöst. Deine Methoden werden also nicht vom Linker entfernt. Aber du hast keine blauen Punkte weil die Methoden als Inline markiert sind.

Wäre jetzt meine wilde Vermutung, basierend auf dem Screenshot....

mfg,
bp
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 17:20
Wo wird denn GetData verwendet? Ich sehe nur die Verwendung von FData.

Wenn du die Property published machst, wird sie auch immer einkompiliert.
Das geht nicht.

Zitat:
[DCC Warnung] uSprite.pas(92): W1055 PUBLISHED verursachte, dass RTTI ($M+) zu Typ 'TNegativeArray' hinzugefügt wurde
[DCC Fehler] uSprite.pas(93): E2188 Published-Eigenschaft 'Data' kann nicht vom Typ ARRAY sein

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 7  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 Uhr.
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