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

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

Erste << 16 17 18 19 20 -21- 22 Ergebnisse der Suche: 643 Treffer (30 pro Seite)
Kaesebroetchen   Nutzer

19.12.2004, 13:33 Uhr

[ - Direktlink - ]
Thema: Linker Problem
Brett: Programmierung

Hi,
ich bekomme beim linken folgenden Fehler:

NewGUI_Functions.o(.text+0xaa4): undefined reference to 'TEXTFIELD_GetClass'

Mein MakeFile sieht so aus:

# Generated by GUICreator - © by Markus Hillenbrand

CFLAGS = -O
DEFS =
LDFLAGS =
LIBS = amiga

CC = gcc
OBJECTS = NewGUI.o NewGUI_Functions.o NewGUI_Main.o NewGUI_temp.o
CCFLAGS = -I. -I$(srcdir)
all: $(OBJECTS)
gcc -o NewGUI $(OBJECTS)
NewGUI.o:NewGUI.c
NewGUI_Functions.o:NewGUI_Functions.c
NewGUI_temp.o:NewGUI_temp.c
NewGUI_Main.o:NewGUI_Main.c

Wie man sehen kann wurde der Quellcode vom GUI Creator erstellt.
Einziger Fehler beim compilieren war das er die <proto/alib.h> nicht finden konnte.
Nachdem ich die auskommentiert habe, compiliert es fehlerfrei.

Leider habe ich keinen blassen Schimmer wo der Fehler liegt.
Googeln brachte nur einen Eintrag und da ging es um Reaction.
GUI_Creator ist jedoch von 1996, also denke ich mal das es damit nichts zu tun hat..
 
Kaesebroetchen   Nutzer

18.12.2004, 17:05 Uhr

[ - Direktlink - ]
Thema: Amiga Programme unter Windows compilieren ?
Brett: Programmierung

Wäre glaube ich schon etwas komfortabler.
Dev-Cpp hat ein paar nette Funktionen wie Codevervollständigung, eine Art Funktionsbrowser mit dem man mit einem Klick zur richtigen Stelle im Quellcode kommt. Das gleiche gilt für die Fehlerausgabe.
Auf dem Amiga ist doch bisher Code-Hervorhebung (Highlightning) das höchste der Gefühle.
Oder hab ich da was verpasst ?
 
Kaesebroetchen   Nutzer

18.12.2004, 15:32 Uhr

[ - Direktlink - ]
Thema: Xp und WinUAE
Brett: Andere Systeme

Nur so als Tip...
WinUAE gibt es auch mit Installationsprogramm und JEDES Installationsprogramm kann Werte in der Registry setzen.
 
Kaesebroetchen   Nutzer

18.12.2004, 14:01 Uhr

[ - Direktlink - ]
Thema: Amiga Programme unter Windows compilieren ?
Brett: Programmierung

Ich hab mal ein paar Fragen für Compiler Experten:

Ich habe gelesen das man beim GCC die Zielplattform angeben kann, so das der GCC auf einem x86'er auch M68k Code erzeugen kann.

Wenn das so ist, dann könnte man doch theoretisch wenn man die benötigten Bibliotheken und Includes hat und sich damit auskennt, auch ein Amigaprogramm unter Windows erzeugen.

Ich frage das deshalb weil es für Windows eine recht gute freie IDE gibt
Dev-Cpp
Die man durch Packages erweitern kann.
Es gibt PAckages für OpenGL, GTK, WxWidgets usw.
Diese Packages kann man selbst erzeugen.
Packages-Howto

Die Idee ist halt,das man viellet ein Package erstellen könnte mit dem sich Amiga Programm Compilieren lassen ?

Ist nur so eine Idee, bitte sagt mir wenn es Schwachsinn ist.
 
Kaesebroetchen   Nutzer

18.12.2004, 13:50 Uhr

[ - Direktlink - ]
Thema: Xp und WinUAE
Brett: Andere Systeme

Danke für den Tip !
Werd mal beobachten ob das hilft
 
Kaesebroetchen   Nutzer

18.12.2004, 13:07 Uhr

[ - Direktlink - ]
Thema: Xp und WinUAE
Brett: Andere Systeme

Hallo,
ich habe folgendes Problem:
Nachdem ich meinen Windows Rechner neu aufgesetzt habe (mit NTFS formatiert und neu installiert) habe ich mir die neueste WinUAE Version heruntergeladen und installiert.
Anschließend habe ich ein Hardfile erzeugt und AmigaOS3.9 neu installiert.
Seltsam war nur das die Installation sehr viel länger dauerte als sonst üblich.
Seitdem ich habe ich auch unter Windows XP das Problem das einige Dateioperationen SEHR viel länger dauern als sonst.
Beispiel: Das Löschen einer Verknüpfung auf dem Desktop > 30s !
Andere Sachen sind jedoch immer noch gewohnt schnell.

Kann WinUAE mir da irgendwos was verstellt haben ?
Wer schön wenn jemand eine Idee hat. Wäre schade wenn ich Windows nochmal installieren müsste, da es sonst eigentlich sehr stabil und schnell läuft.
 
Kaesebroetchen   Nutzer

09.09.2004, 15:34 Uhr

[ - Direktlink - ]
Thema: Soft um CD Lables zu bedrucken gesucht
Brett: Andere Systeme

OpenOffice enthält jede Menge Vorlagen (auch für CD-Labels) diverser Hersteller. Ob "Press it" dabei ist weiss ich nicht, aber irgenwas passt bestimmt.
 
Kaesebroetchen   Nutzer

01.09.2004, 22:56 Uhr

[ - Direktlink - ]
Thema: Hardware-Docs zum Amiga?
Brett: Programmierung

Einige Commodore Originaldokumente gibt es auf der Seite von Dave Haynie

http://www.thule.no/haynie/
 
Kaesebroetchen   Nutzer

01.09.2004, 22:34 Uhr

[ - Direktlink - ]
Thema: Editor für Windows
Brett: Andere Systeme

Programmers Notepad ?

http://sourceforge.net/
 
Kaesebroetchen   Nutzer

17.06.2004, 17:30 Uhr

[ - Direktlink - ]
Thema: Purebasic und WinUAE
Brett: Programmierung

Probier doch bei WinUAE unter der Rubrik CPU die verschiedenen Modelle durch. Könnte ja sein das PB inkompatibel zu dem derzeit eingestellten ist.
 
Kaesebroetchen   Nutzer

17.06.2004, 16:44 Uhr

[ - Direktlink - ]
Thema: GCC+Reaction
Brett: Programmierung

Zitat:
Original von gni:
Zitat:
Kaesebroetchen:
@gni
Damit kompiliert das ganze fehlerfrei, danke.

Gut. Läufts auch? ;-)
Zitat:
Ja, kompiliert und läuft tadellos ! Ist zwar nur ein Fenster mit einem Button aber immerhin.

So einen wilden Code habe ich aber bisher noch nie gesehen (ich bin mehr so ein Windows C++ Hobbyprogrammierer) deshalb wäre ich dir doch sehr dankbar wenn du mir mit einfachen Worten erklären könntest was
(ULONG*)(APTR)&intuiwin );
eigentlich macht ?

Mit anderen Compilern und GCC < 3.x reicht der (ULONG*) Cast. GCC3 würde dennoch meckern, da bei Casts der Compiler annimmt das ein und derselbe Speicher über _verschiedene_ Zeiger geändert werden kann, ohne das der Compiler das mitbekommt. Das würde dann zu Fehlern führen, da der Compiler den Wert einer Speicherstelle nur einmal lesen könnte und dann eine Änderung dieses Speichers nicht bemerken würde. GCC3 hat solche Optimierungen und warnt deshalb bei "verdächtigen" Casts. Manchmal weiss der Programmierer aber mehr als der Compiler und dann will man solche Warnungen vermeiden. Genau das wird gemacht. Erst wird der Zeiger zu einem VOID* Zeiger gemacht (APTR == VOID*) und danach wird der VOID* Zeiger in den "richtigen" Zeiger umgewandelt (hier ULONG*). Auf diese Weise bleibt GCC3 still.


Dann ist das wohl so eine Art doppelte Typumwandlung, OK ich glaube jetzt habe ich es verstanden. Danke.
 
Kaesebroetchen   Nutzer

17.06.2004, 15:23 Uhr

[ - Direktlink - ]
Thema: Ab welchem Preisunterschied lohnt sich denn ne Bestellung im Ausland?
Brett: Get a Life

Zitat:
Original von chkamiga:
Vorsicht! Hatte mal von einem Engländer oder Amerikaner
eine 2 MB -SRAM PCMCIA Karte gekauft.
Hab vorher gefragt ob er nach Deutschland versendet
und was das Kostet.

Als ich sie gekauft habe, fragte ich nach seiner Bankverbindung.
Er meinte dann er aktzeptiert nur "PAYPAL", da ich das nicht
habe und auch keiner den ich kenn wars dann nix.
--
http://people.freenet.de/CHRAmiga.de


CHRKUM(at)web(punkt)de



https://www.paypal.com/de/

8o Erst informieren dann die Leute verrückt machen!

Ach ja, wie hättest du dir denn einen Geldtransfer ins Ausland vorgestellt ?
 
Kaesebroetchen   Nutzer

17.06.2004, 14:52 Uhr

[ - Direktlink - ]
Thema: GCC+Reaction
Brett: Programmierung

@gni

Damit kompiliert das ganze fehlerfrei, danke.

So einen wilden Code habe ich aber bisher noch nie gesehen (ich bin mehr so ein Windows C++ Hobbyprogrammierer) deshalb wäre ich dir doch sehr dankbar wenn du mir mit einfachen Worten erklären könntest was
(ULONG*)(APTR)&intuiwin );
eigentlich macht ?


[ Dieser Beitrag wurde von Kaesebroetchen am 17.06.2004 editiert. ]
 
Kaesebroetchen   Nutzer

17.06.2004, 13:41 Uhr

[ - Direktlink - ]
Thema: GCC+Reaction
Brett: Programmierung

[quote]
Original von gni:
Zitat:
ZeroG:
Zitat:
Kaesebroetchen:
Was heisst BTW, Grep ?

BTW: By the Way - Übrigens
Richtig.
[quote]


I-) Wie ging doch gleich diese Lied ? mfg mit freundlichen . . .
 
Kaesebroetchen   Nutzer

17.06.2004, 13:39 Uhr

[ - Direktlink - ]
Thema: GCC+Reaction
Brett: Programmierung


[/quote]
Welche Variable soll ducrh GetAttr() gefüllt werden? Welche Typ hat sie? Welchen erwartet GetAttr()? Wie Du casten mußt/solltest, damit die Warnung verschwindet (auch mit GCC3) habe ich bereits gepostet.

[ Dieser Beitrag wurde von gni am 17.06.2004 editiert. ]
[/quote]

Jo hast du, ich habe ich nur immer noch nicht verstanden wie ich das in meinen code einbauen soll. Ich bin halt nur ein Amateur!
 
Kaesebroetchen   Nutzer

17.06.2004, 12:15 Uhr

[ - Direktlink - ]
Thema: GCC+Reaction
Brett: Programmierung

Getting an Object’s Attributes
The Intuition function GetAttr() asks an object what the value of a specific attribute is:

ULONG GetAttr(ULONG attrID, APTR myobject, ULONG *mydata);

where attrID is the attribute’s ID number, myobject is the object to get the attribute from, and mydata points to a
data area that will hold the attribute value. This function returns a 0L if the object doesn’t recognize the attribute,
otherwise it returns some non-zero value, the meaning of which depends on the class. In most cases, GetAttr()
returns a 1 when it is successful.

Das habe ich zu GetAttr() gefunden, danach müsste folgender Code doch eigentlich funktionieren ?

ULONG *window,*layout,*button;
/* wie gesagt, man kann auch einen anderen Typ benutzen, */
/* z.B. ULONG window oder APTR window, es müssen nur 4 Byte sein */

struct Window *intuiwin; /* das brauchen wir noch */

kommt aber die gleiche Fehlermeldung.

______________________________________________________________________ __
gni:
Netter Versuch, aber leicht daneben. Schau einfach mal in intuition.doc nach.
BTW, grep ist eine feine Sache.
______________________________________________________________________ __

Was heisst BTW, Grep ?
 
Kaesebroetchen   Nutzer

16.06.2004, 22:32 Uhr

[ - Direktlink - ]
Thema: GCC+Reaction
Brett: Programmierung

Doppelpost, sorry

[ Dieser Beitrag wurde von Kaesebroetchen am 16.06.2004 editiert. ]
 
Kaesebroetchen   Nutzer

16.06.2004, 18:13 Uhr

[ - Direktlink - ]
Thema: GCC+Reaction
Brett: Programmierung

@gni:

Das mit der Reihenfolge der Argumente stimmt wohl, aber die originale Reihenfolge ist auch nicht ganz korrekt:

4.Amigadev:cpp> gcc react.c -o react
react.c: In function 'main':
react.c:113: warning: passing arg 3 of 'GetAttr' from incompatible pointer type
4.Amigadev:cpp>

Ich hab mal in den AutoDocs nachgesehen und nur das gefunden:

reaction.lib/GetAttrs reaction.lib/GetAttrs

NAME
GetAttrsA -- Get multiple object attributes
GetAttrs -- Varargs stub to GetAttrsA

SYNOPSIS
count = GetAttrsA( object, taglist )

count = GetAttrs( object, tag, address, ... )

ULONG GetAttrsA( Object *, struct TagItem * )

ULONG GetAttrs( Object *, Tag, ... )

FUNCTION
Gets multiple attributes of an object iin a single call.
Remember that while the function returns the number of
attributes that were getable, it can not inform WHICH
attributes, if any, were not. Thus, you shouldn't use this
function when you are not sure that an attribute is getable.

INPUTS
object - pointer to the object that should be queried
taglist - a list of tag and ULONG address pairs to fill

RESULTS
The number of attributes that succeeded.


Aber GetAttrs() ist ja wohl auch nicht ganz dasselbe wie GetAttr() ?

Und so richtig ausführlich scheint mir das ganze auch nicht zu sein.
Gibts denn vielleicht noch eine andere Informationsquelle wo man so etwas nachlesen kann ?



 
Kaesebroetchen   Nutzer

16.06.2004, 14:06 Uhr

[ - Direktlink - ]
Thema: GCC+Reaction
Brett: Programmierung

Danke für die sauschnellen! Antworten !

@thomas, ich habe die Änderungsvorschläge mal eingebaut, aber die Einbindung den <proto/xyz.h> machte teilweise Probleme. Ich habe das Programm ans laufen bekommen, aber erst nachdem ich die Änderung an der Einbindung von intuition.h wieder rückgänging gemacht habe.

Trotzdem bleiben noch einige Warnungen:

3.Amigadev:cpp> gcc react.c -o react
react.c: In function 'main':
react.c:114: warning: passing arg 1 of 'GetAttr' makes integer from pointer without a cast
react.c:114: warning: passing arg 2 of 'GetAttr' makes pointer from integer without a cast
react.c:114: warning: passing arg 3 of 'GetAttr' from incompatible pointer type
3.Amigadev:cpp> dir

Was bedeuten diese Meldungen ?

______________________________________________________________________
thomas:
Vielleicht solltest du auch versuchen, den Code zu verstehen, anstatt ihn nur abzutippen. Dann kommst du vielleicht alleine drauf.
______________________________________________________________________

Das versuche ich ja gerade !

Durch das testen und ständige erweitern von Codebeispielen lernt man doch am besten wie der Code funktioniert. Dummerweise ist der meiste Code den ich bisher so gefunden habe halt mit diversen Fehlern durchsetzt die man als Anfänger nur schwer nachvollziehen kann. Umso wichtiger ist da ein Forum wie dieses mit hilfsbereiten Profis die bereit sind ihr Wissen an Anfänger weiterzugeben.

Deshalb an diese Stelle nochmal vielen Dank !

Für diejenigen die es auch mal versuchen möchten, hier das überarbeitete Beispiel aus dem Workshop das sich jetzt mit dem GCC kompilieren lässt:

/* Prototypen einbinden : */
//#include <clib/exec_protos.h>
#include <proto/exec.h>
#include <clib/alib_protos.h>
//#include <proto/alib.h> //Gibt es nicht
#include <clib/intuition_protos.h>
//#include <proto/intuition.h>
//#include <clib/dos_protos.h>
#include <proto/dos.h>
//#include <clib/window_protos.h>
#include <proto/window.h>
//#include <clib/layout_protos.h>
#include <proto/layout.h>
//#include <clib/button_protos.h>
#include <proto/button.h>

/* Typen und Konstanten einbinden : */
#include <intuition/classusr.h>
#include <classes/window.h>
#include <gadgets/layout.h>
#include <gadgets/button.h>

/* Die Dateien können natürlich bei anderen Compilern anders */
/* heißen und an anderen Stellen stehen. Zur Not muss man die */
/* Verzeichnisse nach den benötigten Konstanten etc. durchsuchen.*/

struct Library *IntuitionBase,*DosBase,*WindowBase,*LayoutBase,*ButtonBase;

int main(){

Object *window,*layout,*button;

/* wie gesagt, man kann auch einen anderen Typ benutzen, */
/* z.B. ULONG window oder APTR window, es müssen nur 4 Byte sein */

struct Window *intuiwin; /* das brauchen wir noch */

/* So, den nächsten Teil kennen wir schon: */

IntuitionBase = OpenLibrary( "intuition.library", 39 );
DosBase = OpenLibrary( "dos.library", 39 );
WindowBase = OpenLibrary( "window.class", 44 );
LayoutBase = OpenLibrary( "gadgets/layout.gadget", 44 );
ButtonBase = OpenLibrary( "gadgets/button.gadget", 44 );
if( (!IntuitionBase) || (!WindowBase) || (!LayoutBase) || (!ButtonBase) ){
CloseLibrary( ButtonBase );
CloseLibrary( WindowBase );
CloseLibrary( LayoutBase );
CloseLibrary( DosBase );
CloseLibrary( IntuitionBase );
return( 20 );
}

/* Jetzt wird's interessant : */

layout = (Object*)NewObject( LAYOUT_GetClass(),NULL,
LAYOUT_Orientation,LAYOUT_VERTICAL,
LAYOUT_DeferLayout,TRUE,
LAYOUT_SpaceInner,TRUE,
LAYOUT_SpaceOuter,TRUE,
TAG_END );

/* da haben wir's: LAYOUT_GetClass() kommt aus layout.gadget */
/* und liefert uns den benötigten Zeiger, wir brauchen also */
/* keinen Klassennamen. Dann folgen einige Eigenschaften, mit */
/* denen wir uns noch genauer beschäftigen werden. Sie */
/* betreffen jedenfalls das Aussehen und die Funktionsweise des */
/* Layout. Übrigens gibt es auch Reaction-Makros, die diese */
/* Erzeugung etwas angenehmer machen (in */
/* reaction/reaction_macros.h). */

button = (Object*)NewObject( BUTTON_GetClass(),NULL,
GA_Text,"Mein erster Reaction-Button ...",
TAG_END );

/* Man gewöhnt sich dran, oder? */
/* Schön ist, dass man wirklich nur das angeben muss, was man */
/* benötigt; man muss nicht wie früher erst viele Parameter */
/* festlegen, sondern ist mit ein paar Zeilen fertig. Zudem */
/* sieht es auch noch übersichtlicher aus.*/

SetGadgetAttrs( (struct Gadget*)layout,NULL,NULL,LAYOUT_AddChild,button,TAG_END
);

/* Hier ordnen wir den Button unserem Layout unter. Dazu müssen */
/* wir nur die Eigenschaft LAYOUT_AddChild setzen. Übrigens */
/* hätten wir auch SetAttrs benutzen können, wenn wir sowieso */
/* weder Fenster noch Requester angeben. Aber wir sollten uns */
/* daran gewöhnen, mit SetGadgetAttrs zu arbeiten, denn wenn das */
/* Fenster offen ist, geht's nicht anders. */

window = (Object*)NewObject( WINDOW_GetClass(),NULL,
WINDOW_Layout,layout,
WINDOW_Position,WPOS_CENTERMOUSE,
WA_Activate,TRUE,
WA_Title,"Ein Fenster !!",
WA_DragBar,TRUE,
TAG_END );

/* Hier übergeben wir dem Fenster direkt sein "Kind", nämlich */
/* unser Layout. Dann folgen einige Eigenschaften, mit denen */
/* wir uns nächstes Mal genauer beschäftigen. Sie betreffen */
/* jedenfalls das Aussehen und die Funktionsweise des Fensters. */
/* Offen ist es aber noch nicht, also: */

DoMethod( window,WM_OPEN );

/* So einfach ist das. Wer sich mal die AutoDocs anschaut, wird */
/* feststellen dass man aber bei der Angabe eines Fensters immer */
/* einen Zeiger auf eine Window-Struktur benötigt und kein */
/* Objekt. Kein Problem, holen wir ihn uns: */

//GetAttr( WINDOW_Window, window, &intuiwin );
GetAttr( window, WINDOW_Window, &intuiwin );
/* Immer aufpassen, dass man einen ZEIGER auf die Variable */
/* übergibt, sonst kommt der Guru ... */

Delay( 500 ); /* wir warten erst mal ca. 10 Sekunden ... */

SetGadgetAttrs( (struct Gadget*)button,intuiwin,NULL,
GA_Text,"... ist immer noch da!",TAG_END );

/* Hier ist endlich unser intuiwin im Einsatz! Hat auch einen */
/* Sinn, denn das Fenster muss direkt aktualisiert werden. */
/* Übrigens ist es mir schon des öfteren passiert, dass ich */
/* TAG_END vergessen habe - gerade wenn ich zuvor GetAttr */
/* benutzt habe. Das macht sich dann meist durch seltsame */
/* Ergebnisse oder sogar einen Absturz bemerkbar. Sobald man */
/* mal das Programm debuggt und Enforcer oder ein ähnliches */
/* Tool startet, findet man meist den Fehler. */

Delay( 500 ); /* weil's so schön ist ... */

DoMethod( window,WM_CLOSE ); /* klar, oder ? */

DisposeObject( window );

/* So, das war's. Wie gesagt, das Layout und der Button werden vom */
/* Window freigegeben. Natürlich müssen jetzt noch die Libraries */
/* geschlossen werden. Und wenn das Programm noch weiter geht, */
/* sollte man nicht vergessen, alle Zeiger auf NULL zu setzen: */

window = NULL;
layout = NULL;
button = NULL;
intuiwin = NULL;

CloseLibrary( ButtonBase );
CloseLibrary( WindowBase );
CloseLibrary( LayoutBase );
CloseLibrary( DosBase );
CloseLibrary( IntuitionBase );
return( 0 );
}
 
Kaesebroetchen   Nutzer

16.06.2004, 13:02 Uhr

[ - Direktlink - ]
Thema: AmigaEmulatoren Dringend!!
Brett: AROS und Amiga-Emulatoren

Mit dem Programm Transrom das bei WinUAE im Verzeichnis Amigaprogs (oder so ähnlich) dabei ist kannst du das ROM auslesen.

Mit diesem Befehl kopierst du den Kickstartrom in die RamDisk

transrom >ram:kickstart3.1

Um das ganze auf deinen PC zu bekommen, kannst du das ganze ja einfach auf MS-DOS DD Diskette (720KB formatiert) kopieren. Ist ab Workbench 2.1 ? dabei. ansonsten gibt es wohl noch CrossDos.

Alles weitere zur Bedienung ist auf dieser sehr netten Seite zu dem Thema zu finden.



http://www.amiga-area.de.vu/

Wenn dir das alles zu kompliziert sein sollte, kauf dir AmigaForever das ist die mit Anstand einfachste Lösung.
 
Kaesebroetchen   Nutzer

16.06.2004, 12:44 Uhr

[ - Direktlink - ]
Thema: GCC+Reaction
Brett: Programmierung

Hallo,
ich hab noch mal ein paar Anfängerfragen bezüglich einiger Fehlermeldungen vom gcc (2.95) in zusammenhang mit reaction.
Ich habe versucht den Beispielcode aus dem Workshop von Martin Elsner mit dem gcc zu kompilieren und erhielt dabei folgende Fehlermeldungen:

Neuer Shell-Prozeß 3
3.Amigadev:> cd cpp
3.Amigadev:cpp> gcc react.c -o react
react.c: In function 'main':
react.c:75: 'Gadget' undeclared (first use in this function)
react.c:75: (Each undeclared identifier is reported only once
react.c:75: for each function it appears in.)
react.c:75: parse error before ')'
react.c:106: warning: passing arg 3 of 'GetAttr' from incompatible pointer type
react.c:113: parse error before ')'
3.Amigadev:cpp>


Hier der Quellcode aus dem Workshop:

/* Prototypen einbinden : */
#include <clib/exec_protos.h>
#include <clib/alib_protos.h>
#include <clib/intuition_protos.h>
#include <clib/dos_protos.h>
#include <clib/window_protos.h>
#include <clib/layout_protos.h>
#include <clib/button_protos.h>

/* Typen und Konstanten einbinden : */
#include <intuition/classusr.h>
#include <classes/window.h>
#include <gadgets/layout.h>
#include <gadgets/button.h>

/* Die Dateien können natürlich bei anderen Compilern anders */
/* heißen und an anderen Stellen stehen. Zur Not muss man die */
/* Verzeichnisse nach den benötigten Konstanten etc. durchsuchen.*/

struct Library *IntuitionBase,*DosBase,*WindowBase,*LayoutBase,*ButtonBase;

int main(){

Object *window,*layout,*button;

/* wie gesagt, man kann auch einen anderen Typ benutzen, */
/* z.B. ULONG window oder APTR window, es müssen nur 4 Byte sein */

struct Window *intuiwin; /* das brauchen wir noch */

/* So, den nächsten Teil kennen wir schon: */

IntuitionBase = OpenLibrary( "intuition.library", 39 );
DosBase = OpenLibrary( "dos.library", 39 );
WindowBase = OpenLibrary( "window.class", 44 );
LayoutBase = OpenLibrary( "gadgets/layout.gadget", 44 );
ButtonBase = OpenLibrary( "gadgets/button.gadget", 44 );
if( (!IntuitionBase) || (!WindowBase) || (!LayoutBase) || (!ButtonBase) ){
CloseLibrary( ButtonBase );
CloseLibrary( WindowBase );
CloseLibrary( LayoutBase );
CloseLibrary( DosBase );
CloseLibrary( IntuitionBase );
return( 20 );
}

/* Jetzt wird's interessant : */

layout = (Object*)NewObject( LAYOUT_GetClass(),NULL,
LAYOUT_Orientation,LAYOUT_VERTICAL,
LAYOUT_DeferLayout,TRUE,
LAYOUT_SpaceInner,TRUE,
LAYOUT_SpaceOuter,TRUE,
TAG_END );

/* da haben wir's: LAYOUT_GetClass() kommt aus layout.gadget */
/* und liefert uns den benötigten Zeiger, wir brauchen also */
/* keinen Klassennamen. Dann folgen einige Eigenschaften, mit */
/* denen wir uns noch genauer beschäftigen werden. Sie */
/* betreffen jedenfalls das Aussehen und die Funktionsweise des */
/* Layout. Übrigens gibt es auch Reaction-Makros, die diese */
/* Erzeugung etwas angenehmer machen (in */
/* reaction/reaction_macros.h). */

button = (Object*)NewObject( BUTTON_GetClass(),NULL,
GA_Text,"Mein erster Reaction-Button ...",
TAG_END );

/* Man gewöhnt sich dran, oder? */
/* Schön ist, dass man wirklich nur das angeben muss, was man */
/* benötigt; man muss nicht wie früher erst viele Parameter */
/* festlegen, sondern ist mit ein paar Zeilen fertig. Zudem */
/* sieht es auch noch übersichtlicher aus.*/

SetGadgetAttrs( (Gadget*)layout,NULL,NULL,LAYOUT_AddChild,button,TAG_END
);

/* Hier ordnen wir den Button unserem Layout unter. Dazu müssen */
/* wir nur die Eigenschaft LAYOUT_AddChild setzen. Übrigens */
/* hätten wir auch SetAttrs benutzen können, wenn wir sowieso */
/* weder Fenster noch Requester angeben. Aber wir sollten uns */
/* daran gewöhnen, mit SetGadgetAttrs zu arbeiten, denn wenn das */
/* Fenster offen ist, geht's nicht anders. */

window = (Object*)NewObject( WINDOW_GetClass(),NULL,
WINDOW_Layout,layout,
WINDOW_Position,WPOS_CENTERMOUSE,
WA_Activate,TRUE,
WA_Title,"Ein Fenster !!",
WA_DragBar,TRUE,
TAG_END );

/* Hier übergeben wir dem Fenster direkt sein "Kind", nämlich */
/* unser Layout. Dann folgen einige Eigenschaften, mit denen */
/* wir uns nächstes Mal genauer beschäftigen. Sie betreffen */
/* jedenfalls das Aussehen und die Funktionsweise des Fensters. */
/* Offen ist es aber noch nicht, also: */

DoMethod( window,WM_OPEN );

/* So einfach ist das. Wer sich mal die AutoDocs anschaut, wird */
/* feststellen dass man aber bei der Angabe eines Fensters immer */
/* einen Zeiger auf eine Window-Struktur benötigt und kein */
/* Objekt. Kein Problem, holen wir ihn uns: */

GetAttr( WINDOW_Window, window, &intuiwin );

/* Immer aufpassen, dass man einen ZEIGER auf die Variable */
/* übergibt, sonst kommt der Guru ... */

Delay( 500 ); /* wir warten erst mal ca. 10 Sekunden ... */

SetGadgetAttrs( (Gadget*)button,intuiwin,NULL,
GA_Text,"... ist immer noch da!",TAG_END );

/* Hier ist endlich unser intuiwin im Einsatz! Hat auch einen */
/* Sinn, denn das Fenster muss direkt aktualisiert werden. */
/* Übrigens ist es mir schon des öfteren passiert, dass ich */
/* TAG_END vergessen habe - gerade wenn ich zuvor GetAttr */
/* benutzt habe. Das macht sich dann meist durch seltsame */
/* Ergebnisse oder sogar einen Absturz bemerkbar. Sobald man */
/* mal das Programm debuggt und Enforcer oder ein ähnliches */
/* Tool startet, findet man meist den Fehler. */

Delay( 500 ); /* weil's so schön ist ... */

DoMethod( window,WM_CLOSE ); /* klar, oder ? */

DisposeObject( window );

/* So, das war's. Wie gesagt, das Layout und der Button werden vom */
/* Window freigegeben. Natürlich müssen jetzt noch die Libraries */
/* geschlossen werden. Und wenn das Programm noch weiter geht, */
/* sollte man nicht vergessen, alle Zeiger auf NULL zu setzen: */

window = NULL;
layout = NULL;
button = NULL;
intuiwin = NULL;

CloseLibrary( ButtonBase );
CloseLibrary( WindowBase );
CloseLibrary( LayoutBase );
CloseLibrary( DosBase );
CloseLibrary( IntuitionBase );
return( 0 );
}



Hier meine Fragen:

steht "Gadget" als Platzhalter für etwas anderes, oder liegt der "Fehler" im GCC ?

was hat es mit dem inkompatiblen Zeigertyp von GetAttr auf sich ?

Was mus ich allgemein beachten, wenn ich Code der für StormC vorgesehen ist mit dem GCC kompilieren möchte ?

Vielen Dank im voraus !
 
Kaesebroetchen   Nutzer

02.06.2004, 16:48 Uhr

[ - Direktlink - ]
Thema: UAE und Parallelport?
Brett: AROS und Amiga-Emulatoren

mhh ich benutze zwar den UAE unter Linux nicht, könnte mir aber vorstellen das man UAE dafür erst mal die zugriffsrechte für seriellen bzw parallelen Port erteilen muss. Oder vielleicht probierst du es mal wenn du dich als root angemeldet hast ?
 
Kaesebroetchen   Nutzer

27.05.2004, 11:09 Uhr

[ - Direktlink - ]
Thema: Welchen Ami Emulator?
Brett: Amiga, AmigaOS 4

Ansonsten schau dir mal WinUAE an:

www.winuae.de

Ist im Prinzip das gleiche nur kostenlos aber dafür auch komplizierter in der Einrichtung. Und du brauchst noch einen echten Amiga um dir den Kickstart-Rom zu kopieren.
 
Kaesebroetchen   Nutzer

05.04.2004, 22:52 Uhr

[ - Direktlink - ]
Thema: Amiga "GameStation"
Brett: Get a Life

Gibts das nicht schon länger ?
Ich habe zumindest mal so eine ziemlich gut gemachte CD32 - CD (grausige Namensgebung) mit 200 alten Spielen gesehen. Hatte eine ziemlich geniale Menüführung.

[ Dieser Beitrag wurde von Kaesebroetchen am 05.04.2004 editiert. ]
 
Kaesebroetchen   Nutzer

11.03.2004, 22:50 Uhr

[ - Direktlink - ]
Thema: Die Besten Amiga Spiele aller Zeiten!!!
Brett: Amiga, AmigaOS 4

1.Platz Dune2 (Wird auch beim xten mal nicht langweilig)
2.Platz Siedler
3.Platz Wing Commander (Die CD32 Version läuft FAST ruckelfrei)
 
Kaesebroetchen   Nutzer

11.03.2004, 22:11 Uhr

[ - Direktlink - ]
Thema: MUI bzw. Reaction installieren
Brett: Programmierung

@gni
[/quote]
Das steht doch garanatiert in der Dokumentation. Hast Du dort wenigstens mal gesucht?
Zitat:
Die Dokumentation ist leider nicht wirklich Anfängertauglich. Die Option -lmui die mir ein anderer Thread-Teilnehmer verraten hat, hatte ich darin auch nicht gefunden. Inzwischen bin ich in der Doku darauf gestossen, dass man mit -l libraryname wohl jede beliebige .library Datei einbinden kann (glaube ich zumindest).
Vermutlich (ich habe zwar die CD, aber StormC3 *schauder*) werden nur die OS Header installiert. Die Header von anderen Bibliotheken mußt Du wohl zu Fuß installieren.

[/quote]

Wie machen es denn die anderen Hobby Programmierer ? Welches Compilersystem wird denn so überwiegen verwendet ?
Wie kriegt ihr die Sache mit MUI bzw. Reaction in den Griff ?

Gibt es hier überhaupt noch Hobby Programmierer oder seid ihr alle Berufsprogrammmierer ?
 
Kaesebroetchen   Nutzer

10.03.2004, 22:23 Uhr

[ - Direktlink - ]
Thema: MUI bzw. Reaction installieren
Brett: Programmierung

OK, weiss wohl keiner.

Deswegen mal ne andere Frage. Wenn ich mir die Developer CD kaufe, ist da wirklich die Vollversion von StormC 3 drauf und wenn ja, richtet sich das System bei der Installation VOLLSTÄNDIG ein ?

Mit vollständig meine ich das alle Header , inlines und was es sonst noch so geben mag, die ich für ein einigermassen modernes GUI-System benötige (MUI, Reaction ?), mit installiert werden und ich nicht noch monatelang irgendwelche Anleitungen lesen muss die jeder Nicht-Informatiker einfach nicht verstehen kann.

Es ist nicht so dass ich überhaupt kein C/C++ könnte, aber ich krieg auf dem Amiga einfach nichts ans laufen, was über Konsolenprogramme hinaus geht !

P.S. Falls das jetzt etwas genervt und gefrustet kligen sollte, so liegt das daran, dass ich genervt und gefrustet bin.
 
Kaesebroetchen   Nutzer

29.02.2004, 18:17 Uhr

[ - Direktlink - ]
Thema: MUI bzw. Reaction installieren
Brett: Programmierung

@mazze

Erst mal danke für den Hinweis. Bleibt noch die Frage wie kann man das Speichermodell bei z.B. Dice umstellen ?
 
Kaesebroetchen   Nutzer

28.02.2004, 13:04 Uhr

[ - Direktlink - ]
Thema: SPS, Interesse?
Brett: Programmierung

Hört sich auf jeden Fall interessant an ! Ist das vielleicht sowas ähnliches wie SPS vier (altes MS-DOS Programm) ?
 
Kaesebroetchen   Nutzer

28.02.2004, 12:48 Uhr

[ - Direktlink - ]
Thema: MUI bzw. Reaction installieren
Brett: Programmierung

:dance3: Hat wirklich keiner eine Idee ?:dance3:
 
 
Erste << 16 17 18 19 20 -21- 22 Ergebnisse der Suche: 643 Treffer (30 pro Seite)

Suchbegriffe
Schlüsselwörter      Benutzername
Suchoptionen
Nur in diesen Foren suchen
   nur ganze Wörter
Nur Titel anzeigen
alle Treffer anzeigen

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