Avatar billede friiiiis Novice
05. marts 2005 - 17:42 Der er 8 kommentarer og
1 løsning

TStringList og TBitmap

Hej,

jeg vil gerne bruge en TstringList til at gemme en række bitmap billeder i hvor TStringList så skal bruges i række DLL-filer...
jeg bruger nogenlunde følgende kode:

Var
JegSkalgiDigSkalJeg, JegSkalgiDigEndnuMereSkalJeg :TBitmap;
LangBitmapListe :TstringList;
begin

  JegSkalgiDigSkalJeg := TBitmap.create;
  LangBitmapListe := TstringList.Create;
  LangBitmapListe.addobject('klyt',JegSkalgiDigSkalJeg);

  JegSkalgiDigEndnuMereSkalJeg := LangBitmapListe[0]


Jeg får en fejl i koden

"JegSkalgiDigEndnuMereSkalJeg := LangBitmapListe[0]"

hvor fejlen som kommer hedder "Incompatible types: 'TBitmap' and 'TStringObject'"...???

Hvad gør jeg galt - skal jeg bruge en array of bitmap i stedet?
Avatar billede doc404 Novice
05. marts 2005 - 18:21 #1
LangBitmapListe.addobject('klyt',TObject(JegSkalgiDigSkalJeg));
Avatar billede doc404 Novice
05. marts 2005 - 19:30 #2
ups... JegSkalgiDigEndnuMereSkalJeg := TBitmap(LangBitmapListe[0]);
Avatar billede doc404 Novice
05. marts 2005 - 19:32 #3
og så lige en gang til...

JegSkalgiDigEndnuMereSkalJeg := TBitmap(LangBitmapListe.Objects[0]);
Avatar billede friiiiis Novice
05. marts 2005 - 19:41 #4
Det virker rigtig meget overhovedet ikke...!!!

LangBitmapListe.addobject('klyt',TObject(JegSkalgiDigSkalJeg));

giver bare en fejlmeddelelse... debuggeren finder ikke fejlen, men under runtine kommer der en fejl...???
Avatar billede doc404 Novice
05. marts 2005 - 19:47 #5
Kan du poste koden?
Avatar billede friiiiis Novice
05. marts 2005 - 20:28 #6
var
  StringListDerEREnStringListe2 : TStringList;
  bmp :TBitmap;
  osv....
begin
...

try
while not Eof(F) do
  begin
    Readln(F,s);
    bmp.LoadFromFile(s);
    StringListDerEREnStringListe2.InsertObject(k,s,TObject(bmp));
    k := k +1;
  end;
except
  on exception do
    begin
      MessageDlg('An error occured during the loading of Bitmap files.' + #13#10 +
      'The error has occured while using the   
      file  "ListOfAllBMPImages.ini"',mtError, [mbOk], 0);
      ErrorOccured := true;
    end;
end;

  bmp := TBitmap(StringListDerEREnStringListe2.Objects[1]);
  Image1.Canvas.Draw(0,0,bmp);


Problemet er at Image1.canvas.Draw(....... viser det samme bitmap billede uanset hvilke index jeg benytter.. altså ".Objects[1]" er uafhængig af om jeg vælger 1, 2 eller 36.... Det billede der vises er det sidste billede som indsættes i TStringListen... Readln(F,s) samt bmp.LoadFromFile virker godt nok...
Avatar billede doc404 Novice
05. marts 2005 - 23:33 #7
I dit while loop er nød til at create din bmp hver gang. Ellers har du jo blot en stringlist, hvor ALLE items peger på den samme bitmap, der indeholder det sidst loadede billede.

while not Eof(F) do
  begin
    Readln(F,s);
    bmp := TBitmap.Create; <-- mangler denne
    bmp.LoadFromFile(s);
Avatar billede friiiiis Novice
05. marts 2005 - 23:42 #8
Kanon - så ville jeg lige høre om jeg kan få et svar fra dig, så du kan få dine point...???
Avatar billede doc404 Novice
06. marts 2005 - 00:05 #9
Husk at free'e dine bitmaps igen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester