amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Probs mit Datatypes [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

14.01.2005, 08:54 Uhr

Micha1701
Posts: 938
Nutzer
Hallo zusammen!

Ich weiß, daß thema wurde schon mehrfach durchgekaut und findet sich ziemlich oft hier im Forum. Aber ich kriegs irgendwie nicht hin...

Was ist denn an dem Code hier falsch?

code:
#include <stdio.h>
#include <string.h>

#include <dos/dos.h>
#include <exec/exec.h>
#include <datatypes/datatypes.h>
#include <datatypes/pictureclass.h>

#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/graphics.h>
#include <proto/datatypes.h>

Object *DTBild;
struct BitMap *DTBildbm;
STRPTR filename;

void main(int argc, char *argv[])
{
        int i;
//wurde was mitgegeben?
	if(argc > 1)
	{
		filename = argv[1];

		if (DTBild = NewDTObject ((APTR)filename, DTA_GroupID, GID_PICTURE, PDTA_Remap, FALSE, TAG_DONE))
		{
			i = DoDTMethod(DTBild, NULL, NULL, DTM_PROCLAYOUT, NULL, TAG_DONE);
			DTBildbm = NULL;
			GetDTAttrs(DTBild, PDTA_BitMap, &DTBildbm, TAG_DONE);
			if(DTBildbm)
			{
				i = GetBitMapAttr(DTBildbm, BMA_WIDTH);
				printf("Breite: %dn", i);
			}

		        DisposeDTObject (DTBild);
		}
		else
		{
			if(IoErr() == ERROR_OBJECT_WRONG_TYPE)
			{
				printf("Die Datei '%s' ist kein Bild!n", filename);
			}
		}
	}
}


Das problem hier ist nämlich, daß GetDTAttrs zwar eine 1 zurückliefert und somit wohl die BitMap ermittelt hat, aber in DTBildbm lediglich NULL drin steht. Dann kann ich natürlich nicht mit der BitMap arbeiten...
Aber was ist da falsch? Ich kann keinen Unterschied zu den Beispielen hier im Forum erkennen...


Nachtrag:
Wenn ich mir von GetDTAttrs den BitMapHeader geben lasse, dann bekomm ich den auch. Aber an die BitMap komm ich irgendwie nicht ran...

--
:boing: Micha :boing:

Look at my HPs:
http://www.lanser-online.de.vu


http://www.RealmsofPower.de.vu





[ Dieser Beitrag wurde von Micha1701 am 14.01.2005 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

14.01.2005, 10:01 Uhr

thomas
Posts: 7717
Nutzer

Zitat:
i = DoDTMethod(DTBild, NULL, NULL, DTM_PROCLAYOUT, NULL, TAG_DONE);

Wie kommst du auf TAG_DONE ? Das hat doch nichts mit Tags zu tun !

Der Prototyp lautet DoMethodA (Object *o,Msg *m);

DTM_PROCLAYOUT benutzt die gleiche Message, wie GM_LAYOUT, nämlich struct gpLayout. Also ist die lange Form des Code-Abschnnitts so:

code:
struct gpLayout m;

m.MethodID    = DTM_PROCLAYOUT;
m.gpl_GInfo   = NULL;
m.gpl_Initial = TRUE;
DoMethodA (o,&m);


etwas kürzer wäre so:

code:
struct gpLayout m = {DTM_PROCLAYOUT,NULL,TRUE};
DoMethodA (o,&m);


und ganz kurz ist so:

code:
DoMethod (o,DTM_PROCLAYOUT,NULL,TRUE);


Und da DoMethod eine Funktion der amiga.lib ist, die nicht in allen Umgebungen (z.b. unter WarpOS und PowerUP) verfügbar ist, habe ich stattdessen DoDTMethod genommen.

also

code:
DoDTMethod (o,NULL,NULL,DTM_PROCLAYOUT,NULL,TRUE);


TAG_DONE ist 0 und TRUE ist 1, ein gravierender Unterschied.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Antworten - Zitieren - Direktlink - ]

14.01.2005, 10:43 Uhr

Micha1701
Posts: 938
Nutzer
Ach Thomas, was würd ich nur ohne Dich machen?

Schier verzweifeln, wäre wohl die Antwort.

Danke, für den Hinweis, auf den ich eigentlich hätte selber kommen müssen...
--
:boing: Micha :boing:

Look at my HPs:
http://www.lanser-online.de.vu

http://www.RealmsofPower.de.vu



[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Probs mit Datatypes [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.