Delphi-PRAXiS
Seite 2 von 7     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi die aufzurufende funktion wurde vom linker entfernt (https://www.delphipraxis.net/192566-die-aufzurufende-funktion-wurde-vom-linker-entfernt.html)

EWeiss 1. Mai 2017 16:22

AW: die aufzurufende funktion wurde vom linker entfernt
 
Zitat:

Deine Methoden werden also nicht vom Linker entfernt
Doch!
Das wird mir angezeigt wenn ich mit der Maus über
Delphi-Quellcode:
gS[0].Bitmap :=
dem Bitmap gehe.

gruss

bepe 1. Mai 2017 16:26

AW: die aufzurufende funktion wurde vom linker entfernt
 
Zitat:

Zitat von EWeiss (Beitrag 1369640)
Zitat:

Deine Methoden werden also nicht vom Linker entfernt
Doch!
Das wird mir angezeigt wenn ich mit der Maus über
Delphi-Quellcode:
gS[0].Bitmap :=
dem Bitmap gehe.

gruss

Das hat nix zu sagen (vermutlich wegen dem Inline). Aber wenn dein Screenshot keine "Fälschung" ist, dann wurde Zeile 291 ausgeführt. Und die befindet sich in einer der vermeintlich entfernten Methoden.

EWeiss 1. Mai 2017 16:31

AW: die aufzurufende funktion wurde vom linker entfernt
 
Zitat:

Zitat von bepe (Beitrag 1369642)
Zitat:

Zitat von EWeiss (Beitrag 1369640)
Zitat:

Deine Methoden werden also nicht vom Linker entfernt
Doch!
Das wird mir angezeigt wenn ich mit der Maus über
Delphi-Quellcode:
gS[0].Bitmap :=
dem Bitmap gehe.

gruss

Das hat nix zu sagen (vermutlich wegen dem Inline). Aber wenn dein Screenshot keine "Fälschung" ist, dann wurde Zeile 291 ausgeführt. Und die befindet sich in einer der vermeintlich entfernten Methoden.

Ich habe das Inline entfernt trotzdem bekomme ich gleiche Fehlermeldung.
Assertion failed.

getData ist jetzt aktiviert ändert aber nichts.
Ich glaube es ist besser den Code komplett umzuschreiben und die Classe in die Tonne werf ;) wenn ich keine praktikable Lösung finde.

gruss

himitsu 1. Mai 2017 16:34

AW: die aufzurufende funktion wurde vom linker entfernt
 
Inline ... da gibt es eben nicht DIE eine Methode, sondern viele Kopieen davon, innerhalb der aufrufenden Codestellen.

[edit]
erst hängt das Netz und sind Viele hier voll gemein und antworten einfach so zwischendurch. :cry:

Olli73 1. Mai 2017 16:35

AW: die aufzurufende funktion wurde vom linker entfernt
 
Setze jetzt mal einen Haltepunkt auf assert(..) und schaue ob dort ein positiver Index kommt.

bepe 1. Mai 2017 16:39

AW: die aufzurufende funktion wurde vom linker entfernt
 
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 ;)

EWeiss 1. Mai 2017 16:39

AW: die aufzurufende funktion wurde vom linker entfernt
 
Zitat:

Zitat von Olli73 (Beitrag 1369648)
Setze jetzt mal einen Haltepunkt auf assert(..) und schaue ob dort ein positiver Index kommt.

Nein ich sagte schon es kracht direkt.

Mit Inline kann ich eh keinen Haltepunkt setzen.
Ohne Inline kann ich Haltepunkte bei getData setzen. (Aber es kracht bei Assertion.
setData hingegen ist immer noch ausgeschlossen kann keinen Haltepunkt setzen.

gruss

EWeiss 1. Mai 2017 16:44

AW: die aufzurufende funktion wurde vom linker entfernt
 
Zitat:

Zitat von bepe (Beitrag 1369650)
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

hanvas 1. Mai 2017 19:06

AW: die aufzurufende funktion wurde vom linker entfernt
 
Zitat:

Zitat von bepe (Beitrag 1369650)
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ö

EWeiss 1. Mai 2017 19:27

AW: die aufzurufende funktion wurde vom linker entfernt
 
Zitat:

Zitat von hanvas (Beitrag 1369668)
Zitat:

Zitat von bepe (Beitrag 1369650)
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr.
Seite 2 von 7     12 34     Letzte »    

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