![]() |
AW: die aufzurufende funktion wurde vom linker entfernt
Zitat:
Nochmal ;)
Delphi-Quellcode:
Wenn ein Icon gefunden wird ist CreateBarIcon true.
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); 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 |
AW: die aufzurufende funktion wurde vom linker entfernt
Wie sieht denn jetzt dein Funktion gS.SetLen() aus?
|
AW: die aufzurufende funktion wurde vom linker entfernt
Zitat:
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:
Scheint jetzt wohl falsch zu sein.
procedure TNegativeArray.SetLen(Len: Integer);
begin SetLength(fData, Len * 2 + 1); end; gruss |
AW: die aufzurufende funktion wurde vom linker entfernt
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; |
AW: die aufzurufende funktion wurde vom linker entfernt
sorry, muss +6 sein oben
|
AW: die aufzurufende funktion wurde vom linker entfernt
Zitat:
Ob die Indizien stimmen. gruss |
AW: die aufzurufende funktion wurde vom linker entfernt
Eine ganz einfache Anwendung.
Delphi-Quellcode:
Ich muss jetzt mindestens 100 bzw. Random(100) Einträge addieren können ohne das die negativen Arrays zerstört werden.
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. 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 |
AW: die aufzurufende funktion wurde vom linker entfernt
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 |
AW: die aufzurufende funktion wurde vom linker entfernt
Liste der Anhänge anzeigen (Anzahl: 1)
So funktioniert es:
Anhang 47237 Edit: Und wenn du bei der Deklaration von getData und setData das "inline" rausnimmst, kannst du die Methoden auch debuggen. |
AW: die aufzurufende funktion wurde vom linker entfernt
Zitat:
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 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 by Thomas Breitkreuz