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 << 44 45 46 47 48 -49- 50 51 52 53 54 >> Letzte Ergebnisse der Suche: 2156 Treffer (30 pro Seite)
whose   Nutzer

11.12.2005, 20:29 Uhr

[ - Direktlink - ]
Thema: Write/ReadPixelLine8
Brett: Programmierung

Zitat:
Original von Holger:
Zitat:
Original von MaikG:
Habs erst mit MEMF_CLEAR versucht, mit Chip und dann mit
beiden. Ich bekomme nur eine graue Linie.


Laß mich raten, Deine Hintergrundfarbe ist grau?

Was hast Du denn erwartet?

mfg

Nachtrag: Wenn ich mich recht entsinne, beherrschte die CV64 das konvertieren von True/Pseudocolor in die 8Bit-Werte passend zur jeweils aktuellen Palette. Bei anderen Grafikkarten kannst Du das nicht erwarten...

[ Dieser Beitrag wurde von Holger am 11.12.2005 um 20:19 Uhr editiert. ]


Was er erwartet hat? Das ReadPixelLine8() die korrekten Palette-Werte in sein Array schreibt. Das kann allerdings nicht funktionieren, wenn er "irgendwas" als Quell-RastPort angibt (rp = *win->RPort).

Mit der CV64 hast Du insofern Recht, wenn denn ROMBLER drauf sitzt. Ansonsten wird das von der GraKa-Software gehandhabt (Stichwort WriteChunkyPixels() und deren Fähigkeit, Hardware für die Konversion zu benutzen, sofern vorhanden. Ansonsten Software). Inzwischen sind CGFX/P96 so weit, daß die Palette-Emulation in allen Modi sehr gut funktioniert. Sonst würde kein Programm, welches auf Paletten-Indizes basiert, auf einem HighColor/TrueColor-Bildschirm vernünftig laufen.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

11.12.2005, 20:21 Uhr

[ - Direktlink - ]
Thema: Write/ReadPixelLine8
Brett: Programmierung

Zitat:
Original von Holger:
Zitat:
Original von whose:
Öhm, ist ja richtig, daß es noch schneller ist, gar keine dieser Operationen durchzuführen, sofern das machbar ist. Hier gings aber um Read-/WritePixelLine8() sowie WritePixelArray8(), und diese Funktionen benötigen nun einmal ihre Daten in einer durch 16 teilbaren Anzahl.

Wo man aber weder Multiplikation/Division, noch shift benötigt.

Das habe ich ja schon zugegeben, daß man das auch "sauberer" mit logischen Verknüpfungen machen kann. Von "müssen" war meines Wissens nie die Rede.

Zitat:
Zitat:
Das man mit (((width+15)>>4)<<4) eine Eigenschaft von Integerzahlen in ihrer binären Repräsentation ausnutzt, ist dabei doch nur natürlich. Und auf 68K-Maschinen ist das schneller als die entsprechenden logischen Operationen. Streng genommen eigentlich auf nahezu allen älteren CPUs.
Das will ich doch mal sehr bezweifeln. Auf dem 68060 beanspruchst beide integer-Einheiten mit von einander abhängigen Operationen, auf dem 68000 hängt die Ausführungszeit von der shift-Weite ab, und ab irgendwo dazwischen ein Prozessortyp existiert, bei dem zwei shift-Operationen tatsächlich schneller als eine AND-Operation sind, und der tatsächlich in einem realen AMiga verbaut wurde, vielleicht, ich glaube es aber eher nicht.

Du denkst aber hoffentlich noch an die NOT-Operation, die auf das AND folgt? Sieh Dir das Ganze mal als Assembler-Quelltext an, beide Versionen. Dann urteile, was mehr und was weniger Zyklen benötigt. Ich glaube kaum, daß sich die Gurus das aus Jux und Dollerei ausgedacht haben, oder weil die etwas gegen "saubere" Programmierung hatten. Das hatte (wie eigentlich immer) seinen ganz speziellen Grund.

Schaden kanns jedenfalls nicht, wenn man ihm erklärt, was da genau passiert und warum, und ich denke, er wird sich die von Dir vorgeschlagene Variante auch schon mal in Binärrepräsentation angesehen haben. Wenn nicht, wird er es spätestens jetzt tun, denk ich :)

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

11.12.2005, 20:14 Uhr

[ - Direktlink - ]
Thema: Write/ReadPixelLine8
Brett: Programmierung

Zitat:
Original von MaikG:
Es geht nicht :-(


struct Window *win;
struct RastPort temprp;
struct RastPort *rp;
UBYTE *LinieS; /* Speicher für Linien zwischenpufferung*/

Fenster öffnen, Font öffnen...

LinieS = AllocVec((((304+15)>>4)<<4), MEMF_CHIP+MEMF_CLEAR);
if (LinieS)
{
temprp = *win->RPort;
temprp.Layer = NULL;
temprp.BitMap = AllocBitMap (304,1,8,0,NULL);
ReadPixelLine8 (rp,20,40,304,LinieS,&temprp);
WritePixelLine8 (rp,20,41,304,LinieS,&temprp);
FreeBitMap (temprp.BitMap);
FreeVec(LinieS);
}

Habs erst mit MEMF_CLEAR versucht, mit Chip und dann mit
beiden. Ich bekomme nur eine graue Linie.
Ich hatte auch noch 324 u. 323 statt 304 probiert.


Ok, also als erstes solltest Du etwas bei den MemType-Flags ändern. Korrekt lautet das

MEMF_CHIP|MEMF_CLEAR

also ODER-verknüpfen.

Des weiteren hast Du einen winzig kleinen Fehler in

temprp = *win->RPort;

Der * gehört da nicht hin, denn damit erreichst Du genau das, was bei temprp ohne &-Operator passiert. Es wird der Inhalt der RastPort-Struktur übergeben, nicht der Zeiger auf den Beginn dieser Struktur.

Deswegen erhältst Du auch die graue Linie. Das, was da als scheinbarer RastPort übergeben wird, zeigt irgendwohin im Speicher, da die Linie grau wird, offensichtlich ein Bereich, welcher mit 0 gefüllt ist. Bemerkenswerterweise wird ja trotzdem eine Linie gezeichnet, obwohl rp "irgendwohin" zeigt, nur nicht auf den RastPort des gemeinten Fesnters. Frag mich aber jetzt nicht, warum da sichtbar gezeichnet wird. Vermutlich ein (ungewollter) Seiteneffekt der Struktur.

Nimm den * bei *win->RPort weg, dann sollte es funktionieren.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

11.12.2005, 19:45 Uhr

[ - Direktlink - ]
Thema: Restlaufzeitanzeige
Brett: Andere Systeme

Das kann ich so nicht bestätigen. Ich habe zusätzlich zur %-Anzeige eine Restlaufzeit-Prognose.

Notebook Medion, XP Home Edition, Version 2002.

Da scheint es wohl mehrere Versionen von XP Home Edition zu geben...

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

11.12.2005, 15:10 Uhr

[ - Direktlink - ]
Thema: Write/ReadPixelLine8
Brett: Programmierung

Zitat:
Original von MaikG:
Struct hab ich noch nicht kapiert, gabs unter basic nicht.

da war das halt rp&=PEEKL(mywin&+rport) - irgendwas definieren musste
ich nicht...


Ok, aber der PEEKL oben ist schon sowas in der Art, was unter C mit Strukturen passiert. Die Zeile bedeutet, daß Du den Zeiger auf die RastPort-Struktur aus der Window-Struktur in die Zeigervariable rp übertragen hast. Ähnlich sieht das unter C aus, da hieße es

rp = mywin->rport

rp ist hier eine Variable der Art "struct RastPort *", also ein Zeiger auf eine RastPort-Struktur.

In Deinem Beispiel wars etwas anders, da hattest Du stehen

struct RastPort temprp;

Das veranlaßt den Compiler, Speicherplatz für eine komplette RastPort-Struktur bereitzustellen, also nicht nur für einen Zeiger. Wenn Du WritePixelLine8() als temprp die komplette Struktur übergibst (bildlich gesprochen), kommt da nichts brauchbares bei heraus. Der Compiler übergibt dann als Parameter etwas, womit WritePixelLine8() nichts besonders sinnvolles anfangen kann.

Veranlaßt Du den Compiler aber mittels &-Operator, als Parameter einen Zeiger auf den Beginn der von Dir angelegten temprp-Struktur zu übergeben, dann paßts.

Strukturen sind nichts anderes als ein kleiner Teil Speicher, in dem Werte unterschiedlicher Größen untergebracht werden können, jeder Wert an einer durch die Struktur vorbestimmten Stelle, gezählt vom Beginn der Struktur. Ist so ähnlich wie ein eindimensionales Array, nur mit dem Unterschied, daß die Einträge unterschiedliche Größen haben können.

Zitat:
Gut mit den #?8 Funktionen bekommt man also nur die ersten 256 Farben
der Workbench.


*hüstel* nein, Du bekommst die maximal möglichen 256 Farben der Palette der Workbench, sofern vorhanden. Und das sogar in Modi, die gar keine Palette im herkömmlichen Sinn bieten.

Bietet der Bildschirm aber weniger als 256 Farben, bekommst Du auch dementsprechend nur kleinere Palettenindizes, z.B. bis maximal 128, sofern die Farbtiefe des Bildschirms so eingestellt ist. Du solltest immer daran denken, daß die Bittiefe durchaus auch mal kleiner als 8 sein kann.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

11.12.2005, 14:52 Uhr

[ - Direktlink - ]
Thema: Write/ReadPixelLine8
Brett: Programmierung

@Holger:

Öhm, ist ja richtig, daß es noch schneller ist, gar keine dieser Operationen durchzuführen, sofern das machbar ist. Hier gings aber um Read-/WritePixelLine8() sowie WritePixelArray8(), und diese Funktionen benötigen nun einmal ihre Daten in einer durch 16 teilbaren Anzahl.

Manchmal läßt es sich eben nicht vermeiden, daß man die Daten in einer anderen Anzahl vorliegen hat, dann sind diese Operationen auf jeden Fall notwendig. Wie willst Du z.B. eine Linie mittels WritePixelLine8() ins Bild bringen, die 325 Pixel lang ist, ohne den Rechner zum Absturz zu bringen, wenn Du diese Datenmenge nicht auf 336 Bytes erweiterst?

Das man mit (((width+15)>>4)<<4) eine Eigenschaft von Integerzahlen in ihrer binären Repräsentation ausnutzt, ist dabei doch nur natürlich. Und auf 68K-Maschinen ist das schneller als die entsprechenden logischen Operationen. Streng genommen eigentlich auf nahezu allen älteren CPUs.

Die logischen Operationen, die Du vorgeschlagen hast, sind aus Compilersicht natürlich "sauberer", das ist wahr. Aber hey, hier gehts um Amiga, da muß man sich noch nicht so dermaßen Gedanken darüber machen, ob ein Shift auf der nächsten Maschine noch etwas taugt oder nicht :D

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 11.12.2005 um 15:16 Uhr editiert. ]
 
whose   Nutzer

11.12.2005, 00:11 Uhr

[ - Direktlink - ]
Thema: Write/ReadPixelLine8
Brett: Programmierung

Zitat:
Original von MaikG:

Aha, dieses Shiften << >> hab ich noch nie gemacht, von daher
ist die gleichung für mich etwas unbekannt.


Nun weißt Du, wozu das gut ist :D Wie gesagt, das kann man auch bei anderen Gelegenheiten gut gebrauchen.

Zitat:
> Dafür wird u.A. auch temprp benötigt.

Aber da reicht dann dieses
struct RastPort temprp;
Muss ich also nichts weiter damit machen?


Du hast Dir die Parameter von Write-/ReadPixelLine8() nicht gründlich angeschaut, oder? Der letzte Parameter dieser Funktionen ist ein "struct RastPort *", nämlich ein Zeiger auf eben diesen temprp. Den mußt Du in Deinem Fall mittels &-Operator übergeben, also z.B. WritePixelLine8(......., &temprp);

Warum mit &? Wenn die RastPort-Struktur in Deinem Prog so angelegt wird, wie oben von Dir angegeben, handelt es sich um eine vom Compiler auf dem Heap angelegte Struktur und nicht um einen Zeiger darauf. Da ein Zeiger auf die Struktur von Write-/ReadPixelLine8() gewünscht wird, mußt Du dann logischerweise die Adresse auf diese Struktur übergeben, nicht den "Wert" der Struktur.

Zitat:
>Die 8, die hinter den Funktionsnamen steht, deutet darauf hin,
>daß diese Funktionen mit einer Farbtiefe von max. 8Bit (!)
>arbeiten.

Die Linie darf nur max. 8 Bit tief sein, das es in einem Fenster
auf der Workbench mit 16 Bit ist stört ja nicht, wenn ich das
richtig verstehe. Hab ja schon kurz die WritePixelArray8 benutzt.


Nein, es stört nicht (CGFX/P96 "emulieren" auch auf Screens >8Bit eine 8Bit-Palette). Du bekommst in jedem Fall nur Palette-Indizes zurück, also 8Bit-Einträge. Es kann Dir natürlich passieren, wenn Du die ...8()-Funktionen und CGFX/P96-Funktionen (also die ohne 8 ) mischst, daß Du dann eine 0 zurückbekommst. Also Obacht und darauf testen. Ist zwar nicht offiziell so dokumentiert, aber ich meine, bei ReadPixelLine8() käme als "count" 0 bzw. eine Zahl kleiner als Deine Linienbreite, wenn sich kein Palette-Index zuweisen läßt

Beim Setzen einer Linie passiert das Gleiche, es wird von WritePixelLine8() nur eine Linie mit den Farben der entsprechenden Paletten-Indizes aus Deinem Array gezeichnet.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 11.12.2005 um 00:21 Uhr editiert. ]
 
whose   Nutzer

10.12.2005, 19:58 Uhr

[ - Direktlink - ]
Thema: Write/ReadPixelLine8
Brett: Programmierung

@MaikG:

Also: Array ist der Speicher, in den die Farbwerte der Pixel einer von Dir spezifizierten Linie im sichtbaren Bild ausgelesen werden (ReadPixelLine8) oder aus dem die Farbwerte für eine ins sichtbare Bild zu bringende Linie genommen werden (WritePixelLine8). Das bedeutet, daß Array so groß sein muß, daß alle Farbwerte hineinpassen.

Dazu paßt auch die "seltsame" Berechnung (((width+15)>>4)<<4). Diese Berechnung sorgt dafür, daß die Breite der Linie eine durch 16 teilbare Zahl ergibt .

Um auch hier gleich die Erklärung zu liefern: Schreib Dir die tatsächliche Breite als binäre Zahl auf ein Stück Papier. Dann addierst Du 15 hinzu (wieder binär aufschreiben). Danach verschiebst Du alle Bits des Ergebnisses um 4 Stellen nach rechts und füllst links mit Nullen auf. Mach Dir keine Gedanken, wenn 4 Bits rechts "herausfallen" sollten, das ist der Gag dabei. Nun schiebst Du diese Bits (also OHNE evtl. verloren gegangene Bits) wieder 4 Stellen nach links und füllst rechts mit Nullen auf. Danach teile die entstandene Zahl durch 16. Wird immer glatt aufgehen ;)

Ist ein kleiner "Trick", um ganze Zahlen zu erhalten, die durch eine gewünschte 2er Potenz restlos teilbar sind. Bei einem gewünschten Mehrfachen von 8 z.B. würdest Du (((zahl+7)>>3)<<3) schreiben.

Read-/WritePixelLine8 und auch WritePixelArray8 benötigen die Daten in einer durch 16 teilbaren Anzahl pro Linie, weil diese Funktionen u.A. in ein anderes Ziel-Pixelformat konvertieren können. Diese Konvertierung wird in "Chunks" von 16 Bytes pro Vorgang durchgeführt, also muß eine Linie eine durch 16 teilbare Breite haben, damit die Konvertierung nicht "aus dem Tritt gerät". Dafür wird u.A. auch temprp benötigt.

Die 8, die hinter den Funktionsnamen steht, deutet darauf hin, daß diese Funktionen mit einer Farbtiefe von max. 8Bit (!) arbeiten.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 10.12.2005 um 20:10 Uhr editiert. ]
 
whose   Nutzer

27.11.2005, 02:47 Uhr

[ - Direktlink - ]
Thema: EXTREME-AMIGA CLASSIX GAMES COLLECTION
Brett: Amiga, AmigaOS 4

Zitat:
Original von Supimajo:

Möge jeder Mitleser sich sein eigenes Urteil bilden. Aber in meinen Augen hast du keinen blassen Schimmer von der Aufgabe und der Verantwortung, die der Status eines Moderators mit sich bringt und bist demzufolge hier absolut fehl am Platz.


Auch Du lernst ungern dazu, kann das sein? Als ob es nicht genügt hätte, eine Aktion öffentlicher Demontage zu starten und die wieder zurückzuziehen, jetzt geht das hier wieder los, nur diesmal subtiler.

Du hättest Dir diesen letzten Absatz sparen können und Dein Manifest zur Diskussion stellen, das hätte vollauf genügt, da bin ich mir sicher.

Aber nein, zusätzlich zu Deiner eigenen (und Dir weiterhin unbenommenen) persönlichen Meinung kommt mal wieder was mit Scheinlogik und Absolutheitsanspruch in Verbindung mit Demontagedrohungen. Laß das doch endlich mal und erweise Dich auch hier als der faire und sachliche Diskussionspartner, der Du oft genug bist!

Wenn Maja sich als dieses Postens auch in den Augen anderer als unwürdig erweisen sollte, wird sich das schon zeigen. Du mußt das nicht durch Scheinlogik forcieren (Stichwort: demzufolge).

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 27.11.2005 um 02:48 Uhr editiert. ]
 
whose   Nutzer

25.11.2005, 00:35 Uhr

[ - Direktlink - ]
Thema: EXTREME-AMIGA CLASSIX GAMES COLLECTION
Brett: Amiga, AmigaOS 4

Zitat:
Original von Maja:
@AndreasM:

> Dann solltest Du vielleicht Deinen Moderatoren Posten abgeben...
> Oder wie willst Du sicherstellen das keine illegalen Inhalte im
> Forum landen?

Ich entschuldige mich untertänlichst, dass ich nicht allwissend bin und es gewagt habe, eine kurz hingeworfene Aussage von dir als nicht aussreichend zu empfinden.

Was den "Ton" betrifft. Ich konnte nicht Ahnen, dass du so empfindlich bist, sonst hätte das Ganze mit etwas Honig garniert.

*nichtzufassenmanchmal*


Stimmt, es ist einfach nicht zu fassen. Liest Du Dir Deine Postings eigentlich nochmal durch und stellst Dir dabei vor, wie die auf die betreffenden Leute wirken? Anscheinend nicht.

"Etwas mager, diese Aussage."

Ist für einen Moderator ein durchaus angemessener Satz. [ironie]Zeugt von Neutralität und Distanz, wirklich.[/ironie]

Liebe Maja, genau diese beiden Eigenschaften hast Du vor knapp nem halben Jahr abgelegt. Du gibst Deine Meinungen zu Themen zum Besten, wo Du nach eigener Aussage einmal keine Detailkenntnisse hast, ein anderes mal wieder doch. Du hast mehr als einmal versucht (und teilweise auch geschafft), Diskussionen ins lächerliche oder gar persönliche Eck abgleiten zu lassen. Und da wunderst Du Dich, daß inzwischen sogar Leute, die Dich einst gegen die unten erwähnte Prangeraktion in Schutz nahmen, an Deiner Glaubwürdigkeit zweifeln? Oder daß man Dich Deine eigene Medizin probieren läßt?

Zitat:
@Supimajo

Ich warte jetzt nur noch auf die nächste Prangeraktion von dir. Gibst dir ja wieder redlich Mühe, mich rauszuekeln. Ich muss dich aber enttäuschen. Ich fühle mich in keinster Weise belastet. Auch nicht von deiner Meinung über mich.


Das ist genauso ein Unding. Die Prangeraktion ist passiert, Supimajo hat sich sehr wort- und gestenreich dafür entschuldigt und Euch voll rehabilitiert. Was gibt es da jetzt noch drüber zu mäkeln? Willst Du ihm das wie ein trotziges Kind jahrelang nachtragen? Sei mir nicht bös, aber mit einem solchen Habitus sollte man keine Stelle in einer Gemeinschaft einnehmen, die auf Mäßigung und Ausgleich gerichtet ist.

Könnte man sich nun endlich mal darauf einigen, daß AndreasM seine Aussage keineswegs leichtfertig in den Raum gestellt hat und das auch Moderatoren nicht unfehlbar sind? Das wäre mal ein echter Fortschritt hier...

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

22.11.2005, 02:56 Uhr

[ - Direktlink - ]
Thema: Wer kennt dieses Programm noch? (Tool wie Diskmaster oder DOpus)
Brett: Amiga, AmigaOS 4

@Maja:

Die Frage war zu allererst: "Wie hast Du das denn gemacht...?", nicht, was die Quelle der Bestandteile ist. Das kam erst später und auch nur verklausuliert. Klang schon ein wenig so, als wüßtest Du nicht, wie das Bild zustande gekommen ist. Übrigens war Deine Frage auch nicht besonders konstruktiv, denn hätte er das bewußte Programm zur Erstellung des Phantombilds benutzt, müßte er wohl nicht danach fragen, oder?

Evtl. solltest Du Dich an Deinen eigenen Rat halten und nicht nach dem ersten Satz aufhören zu denken. Wenn Supimajo ein rotes Tuch für Dich ist, schön, aber macht das unter Euch aus und zieh da nicht noch andere Leute mit rein, die mit der Sache rein gar nichts zu tun haben :angry:

Sollte es Dich zusätzlich geärgert haben, daß Steve56 sich ein wenig abfällig über den teilweise rüden Umgangston hier geäußert hat, frag Dich doch einfach selbst einmal, ob das nicht evtl. zutreffen könnte. Das Durchlesen Deiner eigenen Postings an gewisse Leute könnte Dir da sicher mit eine Hilfe sein. Ausgesuchte Wortwahl bedeutet nicht automatisch Freundlichkeit dem Anderen gegenüber.

Versteh das bitte als Anregung, nicht als Angriff persönlicher Natur.

Um mal zum Thema zurückzukommen: Mir sagt das Bild zwar auch etwas, kann mich den hier geäußerten Mutmaßungen aber nur anschließen. Definitiv kann ich auch nicht sagen, welches der genannten Programme das Gesuchte sein könnte.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 22.11.2005 um 02:57 Uhr editiert. ]
 
whose   Nutzer

08.11.2005, 15:13 Uhr

[ - Direktlink - ]
Thema: Guru Meditation Fehler
Brett: Amiga, AmigaOS 4

@Margit:

Ich weiß nicht mehr genau, ob das hier oder auf AmigaWorld war, aber da hat jemand einen Link zu ner Seite gepostet, wo eine junge Dame davon berichtete, genau dieses Teil verwendet zu haben, und zwar so, wie man Dich nicht nach fragen soll :lach:

Jedem Tierchen sein Plaisierchen :D

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

08.11.2005, 00:59 Uhr

[ - Direktlink - ]
Thema: Images auf einem Fenster
Brett: Programmierung

@Holger:

Also sind wir uns im Grunde einig, daß Messages abgeholt werden sollten, wenn sie anliegen, das ist schön ;)

Die empfohlene Wait()-Schleife ist auch meiner Meinung nach der beste und sauberste Weg, damit umzugehen. Also sollte man das auch so machen, wenn keine wichtigen Gründe dagegen sprechen. Die Beispiele für AmigaOS-API- oder gar C-Anfänger bergen jedenfalls keinen konkreten Grund, auf WaitPort() auszuweichen und/oder das Abholen der Messages zu vernachlässigen.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

05.11.2005, 14:43 Uhr

[ - Direktlink - ]
Thema: Images auf einem Fenster
Brett: Programmierung

@NoImag:

Ich verstehe Deine Frage ehrlich gesagt nicht so ganz.

Du kannst das sicherlich so machen. WaitPort() sofort wieder aufrufen. Ich frag mich nur gerade, worin da der Sinn liegen soll... wenn man eine Message bekommt, hat die sicherlich einen Sinn und den sollte man erst einmal ermitteln, bevor man auf die nächste Message wartet. Also die Message abholen. Signale, die nicht mit einer Message zu tun haben, sind ein anderes Thema.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

04.11.2005, 20:37 Uhr

[ - Direktlink - ]
Thema: Images auf einem Fenster
Brett: Programmierung

@Holger:

Die Stichhaltigkeit Deiner Argumentation sehe ich ein. Andererseits müßte dann ein Resource Tracker dann auch meckern, wenn eine evtl. anliegende IDCMP_CLOSEWINDOW-Message beantwortet wird. Genau das tut keins der Tools. Die meckern grundsätzlich nur dann, wenn eine IntuiMessage (wie eben IDCMP_CLOSEWINDOW aus den Einfach-Beispielen) nicht wenigstens beantwortet wird.

Das ist jedenfalls die Erfahrung, die ich oft genug gemacht habe, vor kurzem noch bei AmiDevCpp mit dem Intuition-Grundgerüst. Nach Einbau der entsprechenden Schleife mit GetMsg()/ReplyMsg sind alle Beanstandungen des Resource Trackers sowohl von StormC als auch Maxon C++ erledigt. Und Avail zeigt korrekte Werte für den freien Speicher an.

Irgendetwas ist da also nicht ganz in Ordnung, und ich gehe stark davon aus, daß sich die Doku da über eine Kleinigkeit des Message-Handlings von Intuition ausschweigt.

Selbst wenn das nur ein Seiteneffekt ist: Meiner Meinung nach sollten Messages soweit wie möglich auch beantwortet werden, das wäre sauber. So zeigt man den Beginnern nur von Anfang an, daß man faul sein darf (was man gerade bei AmigaOS eben nicht sein sollte).

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

04.11.2005, 10:47 Uhr

[ - Direktlink - ]
Thema: Images auf einem Fenster
Brett: Programmierung

@gni:

Ich weiß, daß sowas in der Doku steht. Interessanterweise gibts unter StormC z.B. häufiger Meldungen, daß Speicher nicht freigegeben wurde, wenn die IntuiMessages nicht mittels ReplyMsg() beantwortet wurden (wenigstens die erste). Avail spuckt nach dem Programmlauf ein ähnliches Ergebnis aus, es wird Speicher nicht freigegeben. Wird die erste IntuiMessage replied, gibts da keine Sorgen. Scheint dann wohl ein Fehler zu sein. Entweder in Intuition oder in den Docs (wobei ich letzteres eher annehme).


Grüße


Edit: RKM, 3rd Edition, Seite 250:

"After the application opens an IDCMP, it must monitor the port for messages. At a minimum, this involves removing all messages from the port and replying to them. An event loop which processes messages arriving at the IDCMP is discussed below."

Für mich sieht das so aus, als hätten wir alle Recht. IntuiMessages werden nach CloseWindow() oder Programmende freigegeben, aber auf wenigstens eine Message sollte man ein ReplyMsg() folgen lassen. Das würde zumindest erklären, weshalb alle Tools, die eingeschränktes Resource Tracking ermöglichen, bei den "wir warten nur auf ein Signal am Port und machen dann die Schotten dicht"-Beispielen mosern. Übrigens habe ich in den RKMs kein Intuition-bezogenes Beispiel gefunden, daß völlig ohne GetMsg()/ReplyMsg() arbeitet.

Also sollte man meiner Meinung nach auch die zwei Zeilen in diverse Beispiele einbauen. Ist nicht viel mehr Aufwand und auch freundlicher, was den Stil betrifft.

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 04.11.2005 um 14:41 Uhr editiert. ]
 
whose   Nutzer

03.11.2005, 21:23 Uhr

[ - Direktlink - ]
Thema: Images auf einem Fenster
Brett: Programmierung

@Holger:

Laß uns darüber nicht streiten. Ich werde am Wochenende noch einmal nach dem Beispiel suchen, welches nur einen Port/ein Fenster nutzt und das korrekte Abarbeiten der IntuiMessages zum Programmende hin demonstriert.

Fakt ist jedenfalls, daß man diese IntuiMessages nicht unter den Tisch fallen lassen darf, das ist schlicht nicht korrekt. Bei "normalen" Messages ist diese Vorgehensweise erlaubt und bringt einem auch keinen Speicherverlust ein, da hast Du vollkommen recht.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

03.11.2005, 09:52 Uhr

[ - Direktlink - ]
Thema: Images auf einem Fenster
Brett: Programmierung

@Holger:

Naja, ganz korrekt ist es trotzdem nicht, die IntuiMessages einfach untern Tisch fallen zu lassen, da es sich bei z.B. IDCMP_CLOSEWINDOW um eine IntuiMessage-Struktur handelt. Die eigentlich darin verborgene Message-Struktur wird zwar freigegeben, die Intuition-spezifischen Zusatzinformationen aber erst nach einem ReplyMsg().

Bemerkbar ist das einmal in einer Entwicklungsumgebung mit Resource-Tracking wie StormC zum Beispiel, ein anderes Mal durch eine simple "Avail FLUSH - Ausführung - Avail FLUSH"-Folge. Da gehen immer ein paar Bytes flöten, wenn die Message nicht replied wird.

Zum Thema "es können noch Nachrichten anstehen beim Verlassen der Schleife": Das ist im Grunde korrekt, bei diesem Beispiel kann man sich aber auf Seiteneffekte verlassen. IDCMP-CLOSEWINDOW ist hier die einzige IntuiMessage, die ankommen kann. Alle anderen "denkbaren" Messages (welche sollten das sein?) kann man als "normal" annehmen, womit sich ein ReplyMsg() erübrigt. Diese werden ja automagisch freigegeben.

Normalerweise müßte man also bei jedem Programm, welches auf Intuition-Messages wartet, vor dem Beenden erst einmal die Message-Queue leeren. Hier kann man darauf aber getrost verzichten, ein ReplyMsg() bei IDCMP_CLOSEWINDOW genügt. Irgendwo auf einer der alten CATS-Disks ist auch ein entsprechendes Beispiel zu finden, wo genau diese Vorgehensweise angeraten wird (Message-Queue leeren).

Grüße


--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

02.11.2005, 18:39 Uhr

[ - Direktlink - ]
Thema: Amiga-(Re)Newbie will System neu installieren...
Brett: Amiga, AmigaOS 4

@Flinx:

Ich denke mal, diese Fragen kann meszi am Besten beantworten und man sollte sie ihm stellen. Besonders viel Informationen haben wir ja derzeit noch nicht über sein System :D

Andererseits scheint er sich auch sehr dafür zu interessieren, wie das auf herkömmlichem Weg funktioniert. Hoffen wir mal, daß er das auch mit dem OS3.1-Diskettensatz geregelt kriegt.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

02.11.2005, 13:55 Uhr

[ - Direktlink - ]
Thema: Amiga-(Re)Newbie will System neu installieren...
Brett: Amiga, AmigaOS 4

Mal ne ganz andere Frage:

Wäre es nicht sinnvoller, jemand von den hier Mitlesenden macht dem Fragesteller eine Notfalldiskette für OS3.9 fertig und schickt sie ihm zu oder packt das ganze in ein ADF, verkleinert das auf unter 720K und packt noch lha und transadf dazu, wenns paßt?

Wäre meines Erachtens die unkomplizierteste Alternative, ein originales OS3.9 scheint ja vorhanden zu sein, also wäre das auch nicht sonderlich illegal. Dann kann der gute Mann direkt installieren, ohne sich was dabei zu brechen :D

Also, irgend jemand anwesend, der nen verhältnismäßig nackten 1200er mit CD-ROM und OS3.9 hat?

Grüße

P.S.: Schade, daß H&P damals nicht daran gedacht haben, wenigstens eine Minimal-Notfalldiskette mitzuliefern, die auch reibungslosen CD-ROM-Betrieb am IDE unter Kickstart 3.1 ermöglicht. Würde manche Neuinstallation sicher etwas weniger kompliziert gestalten...

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

31.10.2005, 10:26 Uhr

[ - Direktlink - ]
Thema: ESC-Taste beim A4000
Brett: Amiga, AmigaOS 4

@julius:

Auch die älteren KVMs kranken gern am Initialisierungsprozess. Versuche einmal, die ESC-Taste ein wenig später als gewohnt zu drücken, meistens hilft das schon. Bei mir funktioniert ESC auch erst, wenn ich die Taste etwas später gedrückt halte (wenn ich sehe, daß die CVPPC initialisiert wurde), vorher "frißt" der Umschalter den Tastendruck einfach. Ich habe zwar einen elektronischen, aber das sollte keinen großen Unterschied machen.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

30.10.2005, 10:06 Uhr

[ - Direktlink - ]
Thema: Delfina Clockport -> Hänger!
Brett: Amiga, AmigaOS 4

@GREX:

Das ist schnell erklärt. Das Einfrieren tritt auch dann auf, wenn man die PPC-Decoding-Engine benutzt, nicht nur beim delfinampeg.device. Bei beiden Varianten treten die gleichen Symptome auf. Zusätzlich gabs das selbe Problem auch auf dem A1, was an einem Fehler im Soundkartentreiber lag. Da liegt es verdammt nahe, daß die Delfina-Software das Problem verursacht.

Da dieses Problem bei mir vor allem beim Titelwechsel auftritt, vermute ich eine falsche Interrupt-Behandlung, ähnlich wie beim Soundkartentreiber des A1. Da wäre es schon schön, wenn man sich die Delfina-Software mal näher anschauen könnte.

Die Einfrierer kommen übrigens nicht nur beim MP3-Abspielen vor, das passiert sogar bei normaler Soundausgabe via AHI, besonders gern beim Highlight-Feature von AmIRC. Da ist es ein simpler Wave-Sound, der abgespielt wird.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

29.10.2005, 10:59 Uhr

[ - Direktlink - ]
Thema: Delfina Clockport -> Hänger!
Brett: Amiga, AmigaOS 4

@Cego:

Ich fürchte, da wird auch nicht viel kommen, weil das Problem seit dem Erscheinen der Delfina 1996 bekannt ist und immer noch nicht behoben ist.

Ich kenne Dein Problem nämlich in ähnlicher Form auch (sporadisches und zfälligs Einfrieren des gesamten Systems beim Abspielen über AHI), bekannt geworden ist das unter dem Namen "AHI killer bug". Behoben sein sollte das seit etlichen Versionen der delfina.library, aber ich habe das mit jeder Version, selbst der neuesten, die noch mit der Delfina lite funktioniert.

Bemerkenswert finde ich dabei, daß das Einfrieren auf meinem System immer dann vorkommt, wenn beim MP3 Abspielen die Datei gewechselt wird.

Evtl. erreichst Du ja etwas, wenn Du (wie ich auch) anregst, die Quellen der delfina.library endlich wie versprochen freizugeben. Dann hätte ein findiger Kopf die Chance, sich das anzuschauen und evtl. die Ursache für die Lockups zu finden.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

20.10.2005, 23:24 Uhr

[ - Direktlink - ]
Thema: AmiDevCpp
Brett: Programmierung

@Kaesebroetchen:

Ok, ich kümmer mich morgen nachmittag mal drum und teste ein wenig :)

Grüße


--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

18.10.2005, 00:56 Uhr

[ - Direktlink - ]
Thema: Mein erstes C Programm will nicht
Brett: Programmierung

@MaikG:

evtl. noch gegen amiga.lib (oder wie die nu grad beim VBCC heißt) linken?

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

10.10.2005, 14:44 Uhr

[ - Direktlink - ]
Thema: AmiDevCpp
Brett: Programmierung

Zitat:
Original von bernd_roesch:
Ich habe nur das allererste amidev benutzt.(dauert ja sehr lange mit 68k modem runterzuladen)

Ich habe die (hyper)layers.library von AROS damit compiliert um damit mal die OS3.1 layerslibs
zu ersetzen.das compilieren habe ich hinbekommen,aber beim linken kommt der linker fehler _kprintf
fehlt.andre errors bekomme ich keine

Ich habe dann das lib verzeichniss nach text durchsucht,aber fand keinen Befehl kprintf.

irgendwie fehlt der bei amidev.hat da jemand ne lib dafür.Mein alter Aztec C hatte den Befehl auch,
müsste also in C linkerlib sein.nur die linker libs sind nicht kompatibel,so das ich das aztec C zeugs nicht nutzen kann

irgendwie gab es mal ne amigalib wie ich mich dunkel erinner wo auch andre amiga typische sachen drin waren


kprintf() befindet sich meines Wissens nach in der debug.lib, also gesondert von der amiga.lib, welche Du meintest. Muß ich mal nachschauen, wo die in AmiDevCpp abgeblieben ist. Sobald ich wieder zu Hause bin, kümmere ich mich darum.

@Kaesebroetchen:

Wie TerA zeigte, paßt also die ganze Geschichte doch noch nicht. crt0.o gehört zum GCC. Ich vermute mal, daß das der CygWIN-Part des ganzen Pakets ist, oder? Klingt jedenfalls wahrscheinlich, nachdem es bei mir problemlos läuft, ich hatte es ja schon einmal installiert. Was ich allerdings nciht begreife ist, daß es einwandfrei funzt, obwohl sich nun alles auf einer ganz anderen Partition befindet :shock2:

Also noch Nacharbeit an den Pfaden...

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

09.10.2005, 23:50 Uhr

[ - Direktlink - ]
Thema: AmiDevCpp
Brett: Programmierung

Zitat:
Original von Kaesebroetchen:
@whose:
Das Intuition Beispiel sollte sowohl mit C als auch C++ kompilieren.
Bei mit trat zwischenzeitlich bei C++ der Fehler "crt0.o not found" und bei C "Segmentation fault" auf.


Hier gabs keine Probleme. Vorher alte Installation auf C: beseitigt und auf D: installiert, Anwendungsdaten habe ich aber drin gelassen, um zu prüfen, ob der Installer korrekt arbeitet. Tut er, die Daten werden überschrieben. Compilieren geht problemlos, sowohl im C- als auch C++-Modus.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

09.10.2005, 22:23 Uhr

[ - Direktlink - ]
Thema: AmiDevCpp
Brett: Programmierung

Zitat:
Original von Kaesebroetchen:
@Alle

Ich würde schon gerne wissen, ob jetzt alles fehlerfrei funktioniert.
Hat mal jemand die letzte Version (v0.4) getestet ?


Hab sie nur kurz und unvollständig antesten können (wg. Mangel an geeigneten C++-Quellen vor allem ;) ). C-Quellen werden aber anstandslos kompiliert (sogar mit den nervigen Makros :D )

Bisher habe ich aber keine eklatanten Mängel bemerkt. Ich werd morgen auch noch mal den Verzeichnisbaum kontrollieren, ob jetzt alles sein Richtigkeit hat, im groben Überblick sah es aber gut aus.

Gute Arbeit! :)

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

04.10.2005, 11:07 Uhr

[ - Direktlink - ]
Thema: Tester gesucht !
Brett: Programmierung

Zitat:
Original von Kaesebroetchen:
Zitat:
Nee, das meinte ich nicht. Der Crosscompiler läuft dann doch ein wenig fixer als der native GCC. So ne Art "Docking Port" in WinUAE, um ausführbare Programme direkt an WinUAE zu übergeben war die Idee, die dahinter steckt. Also quasi eine noch engere Zusammenarbeit zwischen DevC++ und WinUAE. Müßte man mal mit Bernd Roesch bekaspern, wenn er nicht gerade wieder auf einem "OS4 ist unvollständig"-Trip ist. Dann könnte man evtl. sogar Debugging aus DevC++ heraus ermöglichen...

Vielleicht fragst du ihn gleich mal ?


Ich weiß nicht, ob er mich noch lieb hat, nachdem ich ihn wegen seiner Sprüche zu OS4 mal auf die Füße getreten bin I-)

Zitat:
Zitat:
Meinst Du denn, daß das Paket inzwischen für die Allgemeinheit tauglich ist? Ich meine, ja. Nachdem die Verzeichnisstrukturen jetzt stimmig sind und keine größeren Probleme aufgetaucht sind... ein Eintrag ins AN wäre da angebracht, damit das auch die mitkriegen, die hier im Forum selten mitlesen I-)

Ich will vorher noch die Fehler beseitigen, die Holger angesprochen hat.
Die sind nämlich doch noch drin. Ich hatte mich da wohl vertan (sorry Holger).
Außerdem will ich das Installationsprogramm noch soweit anpassen, das man zumindest zwischen deutsch und englisch wählen kann.

Ein paar hübschere Programmvorlagen wären sicher auch nicht verkehrt...


Ok, dann beheb mal die Fehler noch und wenn Du noch Pakete sehen möchtest, sag einfach mal, welche. Ein bissi Zeit zum Zusammenstellen und Testen müßte ich finden, denke ich :D

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

03.10.2005, 13:19 Uhr

[ - Direktlink - ]
Thema: Tester gesucht !
Brett: Programmierung

Zitat:
Original von Kaesebroetchen:
@whose:
Eigentlich dachte ich, das ich daß schon erledigt hätte mit der -s Option. Bei mir waren die erzeugtem Executables jedenfalls um mehr als die Hälfte kleiner als am Anfang.
Guck mal ob in Werkzeuge->Compiler Optionen auf der ersten Seite unten bei "diese Befehle der Linker Kommandozeile hinzufügen" ein "-s" eingetragen ist und das Häkchen aktiviert ist.


Jup, daran lags, nun ists besser mit der Größe :D

Zitat:
Zitat:
Jetzt wärs noch endgeil, könnte man die Programme direkt zum WinUAE schicken, ohne das man extra die PC-Laufwerke einbinden muß :D

Dann könnte man aber aus devcpp auch gleich den nativen gcc ausführen, und die Programme womöglich noch debuggen...


Nee, das meinte ich nicht. Der Crosscompiler läuft dann doch ein wenig fixer als der native GCC. So ne Art "Docking Port" in WinUAE, um ausführbare Programme direkt an WinUAE zu übergeben war die Idee, die dahinter steckt. Also quasi eine noch engere Zusammenarbeit zwischen DevC++ und WinUAE. Müßte man mal mit Bernd Roesch bekaspern, wenn er nicht gerade wieder auf einem "OS4 ist unvollständig"-Trip ist. Dann könnte man evtl. sogar Debugging aus DevC++ heraus ermöglichen...

Übrigens: Die DevPak-Anleitung ist klasse! :) Meinst Du denn, daß das Paket inzwischen für die Allgemeinheit tauglich ist? Ich meine, ja. Nachdem die Verzeichnisstrukturen jetzt stimmig sind und keine größeren Probleme aufgetaucht sind... ein Eintrag ins AN wäre da angebracht, damit das auch die mitkriegen, die hier im Forum selten mitlesen I-)

Gibt sicher noch mehr Leute, die DevC++ als gutes Entwicklungswerkzeug sehen und gebrauchen könnten...

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
 
Erste << 44 45 46 47 48 -49- 50 51 52 53 54 >> Letzte Ergebnisse der Suche: 2156 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.
.