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 3 von 7     123 45     Letzte »    
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
755 Beiträge
 
#21

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 23: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 23:53 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#22

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 23: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 23:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
755 Beiträge
 
#23

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 23: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
 
#24

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 1. Mai 2017, 23: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
Benutzerbild von Olli73
Olli73

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

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 00:15
Delphi-Quellcode:

  TNegativeArray = class(TObject)
    ...
  public
    ...
    procedure SetLen(n: Integer);

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

procedure TNegativeArray.SetLen(n: Integer);
begin
  SetLength(fData, n*2+1);
end;
Dann kannst du dein Array mit gs.SetLen(n) dimensionieren.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#26

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 00:23
Danke werde es gleich mal testen.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#27

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 00:39
Hmmm...
Bei

gS[ID_BLUEFLARE].Bitmap := also Index -4 kracht es beim einlesen der Bitmap.
Delphi-Quellcode:
procedure TSprite.SetBitmap(const Value: HBitmap);
begin

  FBitmap := Value;
end;
Es sind alle Arrays mit TSprite.Create zugewiesen.
Das HBitmap handle was übergeben werden soll ist auch korrekt.
getData ist wieder nicht zugewiesen.

gruss

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

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
755 Beiträge
 
#28

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 00:46
Was gibst du denn beim Create für einen Wert für aLength an?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#29

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 00:49
Was gibst du denn beim Create für einen Wert für aLength an?
Delphi-Quellcode:
constructor TNegativeArray.Create(aLenght: Integer);
var
  i: Integer;
begin

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

  for I := 0 to aLenght do
    FData[i] := TSprite.Create;
end;
gs := TNegativeArray.Create(6);

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
755 Beiträge
 
#30

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 00:50
6 ist auch zu wenig => n*2+1
Da du scheinbar mit 5 anfängst also 11.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 7     123 45     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 17:41 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