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 5 von 7   « Erste     345 67      
EWeiss
(Gast)

n/a Beiträge
 
#41

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 01:25
Danke für deine Mühe aber es funktioniert so nicht.
Die minus werte bis 0 ja aber der Rest beim neu Dimensionieren nicht.
Mir gehen die Daten von -5 > 0 verloren.
Theoretisch müsste es so funktionieren. Dann hast du irgendwo noch einen Fehler drin....
Nein kein Fehler.
Nochmal

Delphi-Quellcode:
    if CreateBarIcon(sIconSearch, nFound) then
    begin
      inc(nCount);
      gS.SetLen(nCount);

      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);
Wenn ein Icon gefunden wird ist CreateBarIcon true.
Danach wird nCount inkrementiert und die neue länge vom Array festgelegt.
nCount ist in diesen Fall 1 also > 0 trotzdem werden die anderen Arrays die drunter liegen gelöscht.

Ist auch logisch denn der Index eines Arrays fängt bei 0 an nicht bei -5 diese sind nur Virtuell.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

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

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 01:30
Wie sieht denn jetzt dein Funktion gS.SetLen() aus?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#43

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 01:35
Wie sieht denn jetzt dein Funktion gS.SetLen() aus?
Delphi-Quellcode:
  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;

    procedure SetLen(Len: Integer);
    property Data[Index: Integer]: TSprite read getData write setData; default;
    property MaxValue: Integer read GetMaxValue write SetMaxValue;
  end;
Delphi-Quellcode:
procedure TNegativeArray.SetLen(Len: Integer);
begin

  SetLength(fData, Len * 2 + 1);
end;
Scheint jetzt wohl falsch zu sein.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

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

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 01:40
Delphi-Quellcode:
procedure TNegativeArray.SetLen(Len: Integer);
begin
  SetLength(fData, Len + 5);

  // Hier müssen noch entsprechend Instanzen von TSprite erstellt werden
  // (nur für die, die neu hinzukommen)
end;
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

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

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 01:45
sorry, muss +6 sein oben
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#46

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 01:46
Delphi-Quellcode:
procedure TNegativeArray.SetLen(Len: Integer);
begin
  SetLength(fData, Len + 5);

  // Hier müssen noch entsprechend Instanzen von TSprite erstellt werden
  // (nur für die, die neu hinzukommen)
end;
Ich glaube muss mal eine VCL App erstellen mit der ich die Arrays prüfen kann.
Ob die Indizien stimmen.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#47

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 02:46
Eine ganz einfache Anwendung.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, uSprite;

type
  TForm1 = class(TForm)
    MemoN: TMemo;
    btnAnalyze: TButton;
    btnValid: TButton;
    MemoValid: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure btnAnalyzeClick(Sender: TObject);
    procedure btnValidClick(Sender: TObject);
  private
    gS: TNegativeArray;
    MaxCount: Integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnAnalyzeClick(Sender: TObject);
var
  Count: Integer;
  rnd: Integer;
begin
  Count := 0;
  rnd := Random(100);

  repeat
    inc(Count);
    gS.SetLen(Count);

    gS[Count].x := Count;
    MemoN.Lines.Add(IntToStr(gS[Count].x));
  until Count = rnd;
end;

procedure TForm1.btnValidClick(Sender: TObject);
var
  i: Integer;
begin
  MemoValid.Clear;

  for i := 0 to MemoN.Lines.Count do
  if Assigned(gS[i]) then
    MemoValid.Lines.Add('True ' + IntToStr(gS[i].x));

end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin

  gS := TNegativeArray.Create(6);
  for i := -5 to 0 do
  begin
    gS[i] := TSprite.Create;
    gS[i].x := i;
    MemoN.Lines.Add(IntToStr(gS[i].x) + ' Count ' + IntToStr(MemoN.Lines.Count));
    MaxCount := i;
  end;

end;

end.
Ich muss jetzt mindestens 100 bzw. Random(100) Einträge addieren können ohne das die negativen Arrays zerstört werden.
Aber!
Beim zweiten Positiven Eintrag kracht es schon.
wie gehabt setData und getData werden vom Linker entfernt.
Sorry ich bekomme das mit dieser Classe nicht geregelt. (Vielleicht hat ja noch irgend jemand eine Idee.)

Wie man am Bild schon erkennen kann sind die ersten 4 Arrays Assigned aber alle Values von X falsch.
Und ich habe noch keine Positive Arrays addiert.

gruss

Geändert von EWeiss (11. Jul 2019 um 17:02 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#48

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 05:34
Hallo,
ich verstehe diese ganze negativ-Nummer einfach nicht.
Warum nimmst du statt das -5 bis 0 nicht einfach 0 bis 5 und
1. passt den Setter und Getter entsprechend an
Oder
2. übergibst als Parameter immer -X statt X
Oder
3. benutzt ein statisches Array -5 bis 0
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

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

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 10:22
So funktioniert es:
NegativeArray.rar

Edit: Und wenn du bei der Deklaration von getData und setData das "inline" rausnimmst, kannst du die Methoden auch debuggen.

Geändert von Olli73 ( 2. Mai 2017 um 10:35 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#50

AW: die aufzurufende funktion wurde vom linker entfernt

  Alt 2. Mai 2017, 13:31
Zitat:
ich verstehe diese ganze negativ-Nummer einfach nicht.
Was ist da nicht zu verstehen. ?

Ich möchte NUR ein globales Array verwenden deshalb muss ich dieses selber in sich teilen.
Das geht nur in dem ich für den einen teil negative Bereiche verwende und den anderen Positive.
Jo könnte auch ein mehrdimensionales Array verwenden das verkompliziert die ganze Sache aber noch zusätzlich.

@Oli73
Danke für deine Hilfe werde es mal testen.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 7   « Erste     345 67      


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 22:50 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