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

amiga-news.de Forum > Programmierung > Neues MOS Problem [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

01.08.2004, 00:34 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Hi Ich habe wieder ein MOS Problem, und leider finde ich keine Lösung, bzw. warum dieses auftritt, bzw vorher habe ich das über guigfx gemacht wo auch der gleiche Fehler auftrat.

code:
struct NewImage *GetImageFromFile(char *name) {
	struct	BitMapHeader		*bmhd;
	struct	NewImage		*ni;
	struct	pdtBlitPixelArray	pa;
		Object			*pic;
		UWORD			w, h;

	ni = NULL;
	pic = NewDTObject(name,
		DTA_SourceType,	  DTST_FILE,
		DTA_GroupID,		GID_PICTURE,
		PDTA_Remap,		FALSE,
		PDTA_DestMode,	PMODE_V43,
		TAG_DONE);
					
	if (pic) {
		get(pic, PDTA_BitMapHeader, &bmhd);
		if(bmhd) {
			w = bmhd->bmh_Width;
			h = bmhd->bmh_Height;
			ni = NewImageContainer(w, h);
			if (ni) {
				pa.MethodID = PDTM_READPIXELARRAY;
				pa.pbpa_PixelData = (APTR) ni->data;
				pa.pbpa_PixelFormat = PBPAFMT_ARGB;
				pa.pbpa_PixelArrayMod = w*4;
				pa.pbpa_Left = 0;
				pa.pbpa_Top = 0;
				pa.pbpa_Width = w;
				pa.pbpa_Height = h;
				DoMethodA(pic, (Msg) &pa);
			}
		}
		DisposeDTObject(pic);
	}
 	return ni;
}


Aus 68K läuft alles gut, die Funktion soll ein Bild laden und daraus ein ARGB Puffer erzeugen. NewImageContainer belegt Speicher etc..

Der Fehler ist, das unter MOS beim ersten aufruf dieser Funktion immer ein Assign Requester kommt! und ich weiss nicht warum.

Ich habe zuvor mittels CurrentDir() das Verzeichnis geändert und alles wird korrekt geladen (Texte, Icons etc.), nur wenn Bilder über die Datatypes geladen werden sollen, dann kommt auf MOS dieser Requester.

Wie gesagt kam das auch unter guigfx, aber das lädt ja auch über die Datatypes.

gruss

[ Dieser Beitrag wurde von DariusBrewka am 01.08.2004 editiert. ]

[ Dieser Beitrag wurde von DariusBrewka am 01.08.2004 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

01.08.2004, 10:32 Uhr

thomas
Posts: 7717
Nutzer
Bei mir funktioniert das ohne Probleme.

Hier ist das Programm, das ich ausprobiert habe:
code:
#include <proto/exec.h>
	#include <proto/dos.h>
	#include <proto/datatypes.h>
	#include <datatypes/pictureclass.h>
	#include <clib/alib_protos.h>

	struct NewImage {
		UBYTE data[2];
		};


	struct NewImage *NewImageContainer (long w,long h)
	{
	return (AllocVec (w*h*4,MEMF_CLEAR));
	}


	struct NewImage *GetImageFromFile (char *name)
	{
	struct BitMapHeader *bmhd;
	struct NewImage *ni;
	struct pdtBlitPixelArray pa;
	Object *pic;
	UWORD w, h;

	ni = NULL;

	if (pic = NewDTObject(name,
			DTA_SourceType,	  DTST_FILE,
			DTA_GroupID,		GID_PICTURE,
			PDTA_Remap,		FALSE,
			PDTA_DestMode,	PMODE_V43,
			TAG_DONE))
		{
		GetDTAttrs (pic, PDTA_BitMapHeader, &bmhd, TAG_END);
		if(bmhd)
			{
			w = bmhd->bmh_Width;
			h = bmhd->bmh_Height;

			ni = NewImageContainer(w, h);
			if (ni)
				{
				pa.MethodID = PDTM_READPIXELARRAY;
				pa.pbpa_PixelData = (APTR) ni->data;
				pa.pbpa_PixelFormat = PBPAFMT_ARGB;
				pa.pbpa_PixelArrayMod = w*4;
				pa.pbpa_Left = 0;
				pa.pbpa_Top = 0;
				pa.pbpa_Width = w;
				pa.pbpa_Height = h;
				DoMethodA (pic, (Msg) &pa);
				}
			}
		DisposeDTObject(pic);
		}

 	return ni;
	}


	int main (int argc,char **argv)

	{
	struct NewImage *ni;
	BPTR lock,oldcd;

	if (argc < 3)
		{
		Printf ("Usage: %s <dir> <name>n",argv[0]);
		return (20);
		}

	if (lock = Lock (argv[1],SHARED_LOCK))
		{
		oldcd = CurrentDir (lock);

		if (ni = GetImageFromFile (argv[2]))
			{
			FreeVec (ni);
			}
		else
			PrintFault (IoErr(),"unable to load pic");

		CurrentDir (oldcd);
		UnLock (lock);
		}
	else
		PrintFault (IoErr(),"unable to change dir");

	return (0);
	}


aufgerufen jeweils mit img1 work:pictures amigaball.iff

Funktioniert in WinUAE, auf MorphOS und AmigaOS4.

Gruß Thomas

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

[ Dieser Beitrag wurde von thomas am 01.08.2004 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

01.08.2004, 15:05 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von DariusBrewka:
Der Fehler ist, das unter MOS beim ersten aufruf dieser Funktion immer ein Assign Requester kommt! und ich weiss nicht warum.

Es würde vielleicht helfen, wenn Du das verwendete Bildformat und den requested Assign angeben würdest. Möglicherweise handelt es sich nur um ein bestimmtes Datatype, das eine bestimmte zusätzliche Datei laden will...
Aber woher sollen wir das wissen, wenn Du mit den Informationen so sparsam umgehst?

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

01.08.2004, 17:38 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
@Holger

Kann ich nicht sagen, da ich das selber unter MOS nicht testen kann. Aber ich habe mir so etwas ähnliches auch gedacht, z.B. musste man doch für die AK Datatypes irgendein Temporary Verzeichnis angeben oder?.

Werde mal bei denen anfragen, welche das Problem haben, vieleicht läuft's ja mit anderen DataTypes

Ansonsten, ich kann nur das wiedergeben, was ich gesagt bekomme.

Was ich aber tue ist, zuerst das aktuelle Verzeichnis setzen, was in der Startup Messag angegeben ist wenn jedoch die benötigten Programm Daten woanders installiert sind, kann man das über ToolTypes setzen, d.h. existiert dieses TT, so wird jetzt das Current-Dir geändert.
Dann wird das Prefs-File geöffnet (relative Pfad angabe) und Zeile für Zeile eingelesen (mittels dos Aufrufen), dort kommt es nun vor, das Images angegeben sind, welche zu laden sind. Auserdem werden auch Icons einglesen. Bei den Icons kommen keine Probleme (alle mit relativen Pfad), bei den Images kommt der Requester (Images auch mit relativen Pfad). Wird bei den Images der Pfad Absolut angegeben, so können auch nicht mehr die Icons geladen werden.

[ Dieser Beitrag wurde von DariusBrewka am 01.08.2004 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

01.08.2004, 19:35 Uhr

thomas
Posts: 7717
Nutzer
Zitat:
Ansonsten, ich kann nur das wiedergeben, was ich gesagt bekomme.

Nein. Als Programmierer solltest du wissen, welche Informationen benötigt werden, um ein Problem zu analysieren und die entsprechenden Rückfragen stellen. Eine Support-Anfrage zu deiner Software ungefiltert weiterzugeben und andere deinen Job erledigen zu lassen, grenzt an bodenloser Faulheit.

Gruß Thomas

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

[ - Antworten - Zitieren - Direktlink - ]

01.08.2004, 23:50 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
@thomas

Entschuldignug, wenn ich etwas Frage und dieses wie schon gesagt nur auf MOS Probleme bereitet, wie so vieles andere auch,so muss es sich meiner Meinung nach um ein Grundsätzliches Problem handeln. wenn ich wie im letzen meiner Threads gesagt, mit einigen Funktionen unter MOS kein Erfolg habe, welcher aber in den Includes & Autodocs angeführt werden, dass sie existieren (d.h. die Funktionen existieren), so muss ich nicht von den Usern wissen, ob diese auch wirklich existieren.

Natürlich habe ich nachgefragt und auch spezielle Versionen erstellt, welche entweder das Problem zu umgehen versuchen oder zumindestens Ausgabn machen, nur irgendwann hat man es satt täglich unzählige Versionen zu verschicken die nichts bringen, da fragt man einfach ob jemand dieses Problem kennt. Schliesslich funktioniert auf 68k AOS Alles ohne diese Macken. Wenn MOS 100% Amiga Compatibel sein will, dann darf es keine Libs mit Versionsnummern V50 geben, die aber nur V40 unterstützen. Ich muss mir nicht deswegen anhören das mein Programm nicht mit MOS läuft.

Ich sitze jetzt einige Jahre an meinem Programm und verlange nichts dafür und JA es gibt einige die das benutzen, sprich also nicht von Bodenloser Faulheit, ich kann diese Zeit weit Sinnvoller nutzen, als mich 3-4 Stunden täglich vor den Rechner zu setzen um 0Euro Software zu erstellen.

[ - Antworten - Zitieren - Direktlink - ]

02.08.2004, 11:02 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Nachtrag:

Im "amiga-news.de/forum/Morphos&Andere System" habe ich hier einen Aufruf gestartet damit Leute mein Programm auf MOS testen.

Geantwortet haben auch einige (6 Personen), vor ca. 3 Wochen habe ich denen Vesionen zum Testen geschickt, drei dieser Personen hielten es bilang nicht für nötig auch nur eine Zeile zu schrieben, ob's läuft oder nicht. Da das Programm auch ohne Installation läuft finde ich das traurig. Von den MOSlern, auf deren Antwort ich seit 2 bzw. 4 Monate warte ganz zu schweigen.

[ - Antworten - Zitieren - Direktlink - ]

02.08.2004, 12:51 Uhr

thomas
Posts: 7717
Nutzer

Ich finde deine Einstellung irgendwie ein bißchen komisch. Warum investierst du drei bis vier Stunden täglich, wenn es dir keinen Spaß macht ? Es zwingt dich doch keiner. Warum versuchst du MorphOS zu unterstützen, wenn du kein Feedback dazu bekommst ? Es zwingt dich doch keiner. Warum beschwerst du dich ? Du machst es doch freiwillig, es zwingt dich doch keiner. Für eine als Hobby programmierte Freeware ist es doch kein Problem, wenn mal drei Wochen oder Monate nichts daran gemacht wird. Oder wenn es auf MorphOS nicht läuft. Man kann das ganze auch viel ruhiger angehen, ohne fremde Systemprogrammierer zu beschimpfen (siehe MorphOS Versionsnummern).

Und wenn du Rückfragen an deine Tester stellst, dann solltest du die Antworten auch hier dazuschreiben (z.B. welches Assign denn nun gefragt wurde). Sonst darfst du dich nicht beschweren, daß du beschuldigt wirst, Anfragen ungefiltert weiterzugeben.

Gruß Thomas

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

[ - Antworten - Zitieren - Direktlink - ]

02.08.2004, 15:48 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Zitat:
Ich finde deine Einstellung irgendwie ein bißchen komisch. Warum investierst du drei bis vier Stunden täglich, wenn es dir keinen Spaß

Ich weiss nicht, ob ich etwas von keinen Spass geschrieben habe. Fakt ist wenn du etwas an Personen schickst, weil du eigentlich mit deinem Programm überfällig bist UND extra schreibst dass das Wichtig ist, würdest auch du Sauer werden, wenn du nach 3 Wochen noch keine Antwort erhälst. Wie gesagt man braucht nur das Icon anklicken und Fertig ist oder auch nicht. Warum es auf MOS so viele Komplikationen gibt weiss ich nicht, ich jedenfalls sehe bei mir kein gravierenden Fehler.

Zitat:
macht ? Es zwingt dich doch keiner. Warum versuchst du MorphOS zu unterstützen, wenn du kein Feedback dazu bekommst ? Es zwingt dich doch keiner. Warum beschwerst du dich ? Du machst es doch freiwillig,

es gibt halt aber noch Menschen, die mir auch auf MOS Feedback geben, Leider kann man aber mit einem/zwei Tester/n manche Sachen nicht beurteilen, ob das nun Persönliches Pech, oder etwas MOS typisches ist.

Zitat:
es zwingt dich doch keiner. Für eine als Hobby programmierte Freeware ist es doch kein Problem, wenn mal drei Wochen oder Monate nichts daran gemacht wird. Oder wenn es auf MorphOS nicht läuft. Man kann

über ein Jahr, und wenn ich angebe dass ich eine neue in ein Paar wochen veröffentlichen will, so finde ich das schon schlimm, wenn ich erstmal Wochen/Monate-lang auf Antwoten warten muss.

Leider gibt es von OS Installation zu OS Installation auch Unterschiede und ich kann einige Bugs nicht selber reproduzieren, d.h. ich muss mich auf BetaTester verlassen!, wenn ich aber Vorschläge unterbreite oder Bugfixes anbiete, so will ich doch wissen ob's gklappt hat oder? schliesslich ist es so, das diese Leute das Pogramm benutzen wollten.

Zitat:
das ganze auch viel ruhiger angehen, ohne fremde Systemprogrammierer zu beschimpfen (siehe MorphOS Versionsnummern).

wo habe ich das?, bzw. wenn ich gesagt bekomme " andere AOS Programme machen auf MOS aber keine Probleme " , fragt man sich schon woran dieses liegt. Auf AOS 68k unterscheidet man soche Sachen an den Versionsnummern und wenn es auf MOS damit nicht geht, kann ich nichts dafür, deshalb ist mein Programm noch lange nicht Buggy!

Inzwischen testet mein Prog auf MOS und wenn dann workbench.lib V41 existiert wird trotzdem nur von V39 ausgegangen, leider ist selbst dieses bei manchen MOS Funktionen Sinnlos!, da diese einfach nicht vorhanden zu sein scheinen. Natürlich hast du aber Recht dass man die MOS Developer nicht deswegen beschimpfen soll (was ich auch nicht tat).

Zitat:
Und wenn du Rückfragen an deine Tester stellst, dann solltest du die Antworten auch hier dazuschreiben (z.B. welches Assign denn nun gefragt wurde). Sonst darfst du dich nicht beschweren, daß du beschuldigt wirst, Anfragen ungefiltert weiterzugeben.

Ich denke mal, wenn es irgend welche Informationen darüber geben würde ich das garantiert auch angeben und würde selber auch Lösungen haben. Sprich es kommen Assign Requester ohne Information, nächstes mal werde ich das natürlich nicht vergessen!

Jetzt ist aber Schluss mit dem persönlichen Zeug, ich gebe hier keine Ungefilterten Anfragen weiter und habe erst mehrere Tage selber nach dem Problem gesucht.

[ - Antworten - Zitieren - Direktlink - ]

08.08.2004, 14:56 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Ist inzwischen behoben, lag daran dass sich MatchFirst/Next/End() auf MOS scheinbar ein wenig anders als auf AOS verhalten.

Man kann soweit ich weiss nicht einfach ein Verzeichnis angeben, welches untersucht werden soll, also mit CurrentDir() ändern, da ich aber während der Untersuchung lokale Daten aus dem letzten lokalen Verzeichnis laden muss, habe ich kurz nach MatchFirst() dieses wieder zurückgesetzt und das hat auf AOS immer funktioniert, da ich dachte MatchFirst() speichert dieses zwischen. dadurch ist auf MOS aber einiges durcheinander geratenso dass ich das CurrentDir(dir vor MatchFirst()) jetzt hinter MatchEnd() gesetzt habe.

Leider muss ich jetzt nach jedem MatchNext() zwei mal CurrentDir() aufrufen.

Nunja, hauptsache es funktioniert jetzt.

gruss

[ Dieser Beitrag wurde von DariusBrewka am 08.08.2004 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Neues MOS Problem [ - Suche - Neue Beiträge - Registrieren - Login - ]


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