AGB  ·  Datenschutz  ·  Impressum  







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

die aufzurufende funktion wurde vom linker entfernt

Ein Thema von EWeiss · begonnen am 1. Mai 2017 · letzter Beitrag vom 2. Mai 2017
Antwort Antwort
bepe

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

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 16:39
Das Inline ist nicht schuld. Es ist das Assert. Da kommt vermutlich ein positiver Wert rein. Aber mit deinem Assert stellst du sicher, das nur negative Werte und Null akzeptiert werden.

Da du da eh noch ein Abs hast, sind die Asserts falsch und überflüssig

mfg,
bp
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 16:44
Da du da eh noch ein Abs hast, sind die Asserts falsch und überflüssig
Habe diese deaktiviert läuft jetzt durch.
Obwohl der Kram immer noch entfernt wird.
Ich werde die Classe verwerfen das macht keinen sinn.

Für mein anderes Problem mache ich einen neuen Thread auf.
Danke.

Zitat:
erst hängt das Netz und sind Viele hier voll gemein und antworten einfach so zwischendurch.
So ein Ärger aber auch!

gruss

Geändert von EWeiss ( 1. Mai 2017 um 19:02 Uhr)
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
171 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 19:06
Da du da eh noch ein Abs hast, sind die Asserts falsch und überflüssig
Sind Sie nicht. Die ursprüngliche Frage (in einem anderen Thread) war die Verwendung ausschließlich negativer Indicies für das Array, zu nichts anderem ist die Klasse gut. Positive Indizies werden nicht unterstützt.

In der Zwischenzeit sollen wohl auch Indizies > 0 verwendet werden. Ohne Translation der Indizies adressieren die Positionen -X und X die gleiche Zelle im Array, es sollen aber - soweit ich verstehe was er will - unterschiedliche Daten an -X und X gespeichert werden. Durch das Assert wäre ihm das wenigstens aufgefallen, ohne Assert ist der Fehler später viel schwerer zu erkennen.

cu Ha-Jö
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 19:27
Da du da eh noch ein Abs hast, sind die Asserts falsch und überflüssig
Positive Indizies werden nicht unterstützt.

cu Ha-Jö
Ja und das ist mein Problem daher muss ich trotz deiner guten Arbeit die Classe verwerfen.

Zum besseren Verständnis.
Hier werden die Bitmap Ressourcen addiert die für das Window später verwendet werden.
Die Values gehen von -5 > 0

Delphi-Quellcode:
procedure AddChildControls();
begin

  gs := TNegativeArray.Create(6); // -5 to 0

  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;

  gS[ID_LEFT].x := 0;
  gS[ID_LEFT].y := YMIN_SIZE - 25;
  gS[ID_LEFT].opacity := 128;
  gS[ID_LEFT].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'Left.png', width, height);
  gS[ID_LEFT].w := width;
  gS[ID_LEFT].h := height;

  gS[ID_RIGHT].x := gS[0].w - gS[ID_LEFT].w;
  gS[ID_RIGHT].y := YMIN_SIZE - 25;
  gS[ID_RIGHT].opacity := 128;
  gS[ID_RIGHT].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'Right.png', width, height);
  gS[ID_RIGHT].w := width;
  gS[ID_RIGHT].h := height;

  gS[ID_FLARE].x := 0;
  gS[ID_FLARE].y := 16;
  gS[ID_FLARE].opacity := 200;
  gS[ID_FLARE].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'Flare.png', width, height);
  gS[ID_FLARE].w := width;
  gS[ID_FLARE].h := height;

  gS[ID_BLUEFLARE].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'BlueFlare.png', width, height);
  gS[ID_BLUEFLARE].w := width;
  gS[ID_BLUEFLARE].h := height;
  gS[ID_BLUEFLARE].x := 0;
  gS[ID_BLUEFLARE].y := YMIN_SIZE - (gS[ID_BLUEFLARE].h + 3);
  gS[ID_BLUEFLARE].opacity := 255;

  gS[ID_FOCUS].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'Focus.png', width, height);
  gS[ID_FOCUS].w := width;
  gS[ID_FOCUS].h := height;
  gS[ID_FOCUS].x := 0;
  gS[ID_FOCUS].y := YMIN_SIZE - (gS[ID_FOCUS].h + 4);
  gS[ID_FOCUS].opacity := 128;

end;
Das Problem mit dieser Classe ist das ich NUR Negative Values addieren kann.
Bsp.
Icons werden addiert.

Delphi-Quellcode:
    if CreateBarIcon(sIconSearch, nFound) then
    begin
      inc(nCount);
      //Setlength(gS, nCount); funktioniert nicht mher wegen der neuen Classe

      gS[nCount].y := nHeight;
      gS[nCount].SCALE := SCALE_DEFAULT;
      gS[nCount].opacity := 255;
      sUseThumb := sTempPath + 'OTTB ' + IntToStr(nFound) + '.png';
      gS[nCount].Bitmap := CreateDockIcon(sUseThumb, gS[nCount].w, gS[nCount].h);

      DeleteFile(sUseThumb);

      if DoLnk then
        gS[nCount].ShellTo := Lowercase(sTarget);
Hier wird das Array normalerweise redimensioniert.
Wenn gS positive werte bekommt sind sie am ende doch Negativ bedingt durch die Classe.

Das Array gS muss eine Kombination von Negativen und Positiven werten sein.
Da das aber nicht geht werde ich wohl oder übel wieder alles umbauen müssen.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
782 Beiträge
 
#5

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 22:07
Das Problem mit dieser Classe ist das ich NUR Negative Values addieren kann.

...

Hier wird das Array normalerweise redimensioniert.
Wenn gS positive werte bekommt sind sie am ende doch Negativ bedingt durch die Classe.

Das Array gS muss eine Kombination von Negativen und Positiven werten sein.
Da das aber nicht geht werde ich wohl oder übel wieder alles umbauen müssen.
Wer sagt, dass das nicht geht? Anstatt

Delphi-Quellcode:
function TNegativeArray.getData(index: Integer): TSprite;
begin
  assert(index <= 0);
  result := fData[abs(index)];
end;
einfach z.B: das hier nehmen:

Delphi-Quellcode:
function TNegativeArray.getData(index: Integer): TSprite;
begin
  if Index < 0 then
    result := fData[abs(index + 1) * 2 + 1]
  else
    result := fData[index*2];
end;
Edit: Quelltext angepasst, siehe unten.

Geändert von Olli73 ( 1. Mai 2017 um 22:53 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 22:21
Delphi-Quellcode:
function TNegativeArray.getData(index: Integer): TSprite;
begin
  if Index < 0 then
     result := fData[abs(index + 1) * 2 + 1]
   else
   result := fData[index * 2];

  fData[abs(index)]; //[DCC Fehler] uSprite.pas(297): E2014 Anweisung erforderlich, aber Ausdruck vom Typ 'TSprite' gefunden
end;
Zusätzlich habe ich immer noch das Problem bei der Redimensionierung.

Delphi-Quellcode:
    if CreateBarIcon(sIconSearch, nFound) then
    begin
      inc(nCount);
      //Setlength(gS, nCount);
Irgendwie ein Anfang ohne Ende

Denke mal
Zitat:
fData[abs(index)];
wird nicht mehr benötigt.


gruss

Geändert von EWeiss ( 1. Mai 2017 um 22:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
782 Beiträge
 
#7

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 22:52
Genau. fData[abs(index)]; muss weg. Das stand da noch von vorher. Copy&Paste halt.

Für deine Dimensionierung (SetLength) machst du einfach eine Methode in die Klasse, die dies vornimmt;

Wenn dein TNegativeArray von -n..+n geht, musst du SetLength mit n*2+1 aufrufen;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 22:55
Genau. fData[abs(index)]; muss weg. Das stand da noch von vorher. Copy&Paste halt.

Für deine Dimensionierung (SetLength) machst du einfach eine Methode in die Klasse, die dies vornimmt;

Wenn dein TNegativeArray von -n..+n geht, musst du SetLength mit n*2+1 aufrufen;
Kleines Beispiel muss sonst raten
Danke.. wenn es funktioniert kann ich die vielleicht doch noch verwenden.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz