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 << 26 27 28 29 30 -31- 32 33 34 35 36 >> Letzte Ergebnisse der Suche: 8116 Treffer (30 pro Seite)
Holger   Nutzer

15.07.2011, 13:52 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von akl:
Umso seltsamer, dass man sie unbedingt in die GadTools-API integriert hat, und keine eigene MenuTools-API bereitgestellt hat ;-)

Ich schätze, das ist historisch bedingt. Die gadtools-Library scheint eine Parallelentwicklung zum restlichen AmigaOS zu sein. Sie benutzt in der ersten Fassung kein BOOPSI und es gibt auch eine Version, die unter AmigaOS 1.x läuft. Sie ist also eher so etwas wie eine guiutil.library, die man als Aufsatz implementiert und später ins OS integriert hat. Nur der Namen gadtools ist insofern unpassend gewählt.

Hätte man die Library konsequent als AOS2.0 Feature unter Verwendung des ebenfalls mit AOS2.0 eingeführten BOOPSI entwickelt, wäre die Geschichte mit dem CreateContext und den speziellen Refresh und Notification Funktionen komplett überflüssig gewesen. Dann hätte man die übrig gebliebenen acht Funktionen (vielleicht hätte man es auf noch weniger reduzieren können) auch direkt in intuition eingebaut.

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

15.07.2011, 13:43 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

@AGSzabo:
Schreib doch neue Sachen in neue Beiträge, statt einen alten mehrfach zu editieren.

Zitat:
Original von AGSzabo:
übrigens, ich habe ein "pages" widget, das kann multiple inhalte an der selben stelle, von denen im layout der größte genommen wird und von denen nur einer an der front sein kann. die anderen werden dann der funktion SetVisible(false) übergeben.

Aha, Du hast also auch Objekte, die nicht sichtbar sind und Platz wegnehmen. ;)

Zitat:
ps: was ist mit einem popup-menu? es ist nicht on screen und will trotzdem sichtbar sein und auch mausklicks erhalten und mehr.
Wieso ist ein Popup-Menü nicht on-screen?
Natürlich ist es on-screen, während es angezeigt wird.
Zitat:
pps: wenn du den rasport mit dem layout misenden willst, müsste das layout auch immer von ganz oben kommen. ein balance-widget kann es nicht selber nur an seine beiden childs senden ... oder?
Ich kann Deine Logik nicht nachvollziehen. Ein Balance-Widget bekommt seinen Kontext von oben, wie alle anderen Widgets auch, und sendet ihn an seine Kinder, egal, ob das nun zwei oder zweihundert sind. Wie alle anderen Widgets auch.
--
Good coders do not comment. What was hard to write should be hard to read too.
 
Holger   Nutzer

15.07.2011, 13:37 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

Zitat:
Original von AGSzabo:
Das Delegieren gestaltet sich bei mir ein wenig kompliziert. Man muß schon wissen, was zu delegeiren ist, wie und an wen. Wenn man neue features in das system einbaut muss die delegierde klasse auch um dieses features delegierend erweitert werden?

Die gleiche Frage kannst Du auch umgekehrt, bei Deiner Vorgehensweise stellen: Wenn man neue Features in das System einbaut muss die Tab-Klasse auch um die Weiterleitung dieses Features an die echte, statt der falschen Kind-Liste erweitert werden?

Zitat:
Original von AGSzabo:
die objekte in den neuen tabs haben noch keinen oxDrawInfo-pointer in sich (nicht verwechseln mit der amiga os drawinfo), da ist zB der RastPortzeiger drin. ...

Wenn man den Rastport nur zum zeichnen benötigen würde, täte ich ihn mit der DRAW methode mitsenden, aber ich brauche ihn, und auch den windowzeiger auch anderswo als nur beim zeichnen...

Ich würde so etwas auf keinen Fall im Objekt speichern, das ist nicht nur Speicherverschwendung, sondern führt zu einer falschen Semantik.

Klar brauchst Du solche Informationen auch für andere Operationen als das Zeichnen. Trotzdem sind das alle Operationen, die somit diese Informationen als Parameter übergeben bekommen können.

Eine immer präsente Information verführt dazu, sie auch dann zu benutzen, wenn ihre Gültigkeit gar nicht sicher ist. Also außerhalb der Operationen, für die sie eigentlich gedacht ist.
Zitat:
Original von AGSzabo:
der rasport ist nicht an zwei orten. jedes objekt hat lediglich einen pointer auf die drawinfo und da ist dann der rastport auch drin. die drawinfo gehört zu window und gibts nur einmal.

Du hast diese Information trotzdem überall kopiert. Wenn man einen Teilbaum in einen anderen Baum verschiebt, muss man trotzdem diverse Klimmzüge für etwas machen, was anderswo mit der Änderung von einem, maximal zwei Pointern abgehakt wäre.
Zitat:
ein unsichtbares objekt das zwar platz einnimmt ... wofür?
Damit sich nicht das gesamte Layout verändert, wenn es später eingeblendet wird.

Tabs sind doch das einfachste Beispiel dafür. Wenn ein nicht sichtbarer Tab mehr Platz benötigt als der sichtbare, soll dann beim Umschalten des Tabs das gesamte Fenster inkl. aller Komponenten neu layoutet werden, oder reservierst Du von Anfang an so viel Platz für die Tabs, dass auch nicht sichtbare Tabs Platz hätten?

Zitat:
Original von Der_Wanderer:
Das was du "Visible" nennst, nenne ich in NTUI "OnScreen" und bedeutet, dass das Widget tatsächlich auf dem Bildschirm sichtbar ist, also z.b. auf Refresh Anfragen reagiert oder verwirft. Dieses Flag darf ausschließlich die Layout Methode setzen oder löschen.

Hat dieses Flag denn etwas mit dem Layout zu tun?

An sich ist doch ein Objekt on-screen, wenn es (und alle seine Parents) visible und der Root ein Fenster ist, dass tatsächlich geöffnet ist. Diese Eigenschaft ändert sich doch nicht durch layouten.

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

14.07.2011, 18:48 Uhr

[ - Direktlink - ]
Thema: RFID Um mich funkt es nur noch :)
Brett: Get a Life

Zitat:
Original von jochen22:
Und das weißt Du oder vermutest Du. Ich könnte mir durch aus vorstellen, daß die Internetinfrastruktur zum Transport benutzt wird.

Spätestens dann, wenn ein Unternehmensberater der Bank verklickert, wieviel Geld man doch an der Infrastruktur sparen könne, wenn man die Bankautomaten „in der Cloud“ arbeiten lässt.

Aber vorher wird alles auf SAP umgestellt.

Zitat:
Sind sie ja gar nicht. Zumindest nicht auf dem Kontoausdruck
(Was aber wahrscheinlich eher eine Buchugsverzögerung als eine
Datenübermittlingsgeschichte ist.)

Kommt auf die Bank an. Einige zeigen schwebende, noch nicht wirksame Buchungen online an. Gebucht wird eh alles am Ende des Tages (bzw. des Wochenendes).
Zitat:
Zitat:
Original von Maja:
Jede Bank hat ein zentrales Rechenzentrum,...

Woher weißt Du das. Vermutung ? Es gibt wohl nicht wenige Firmen die
kein Rechenzentrum haben sondern Ihre EDV in ein Rechenzentrum ausgelagert haben.

Streiche „zentral“, aber der Punkt von Maja ist, irgendwie sind die Dinger letztendlich doch miteinander vebunden, der Bankautomat, irgendein Rechenzentrum und der Rechner, mit dem man kommuniziert, wenn man Online-Banking macht.

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

14.07.2011, 18:02 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

Zitat:
Original von AGSzabo:
ich mache es so, dass ich immer nur den aktuellen tab-inhalt in die childsliste einhänge. und wenn ein anderes tab geklickt wird, hänge ich das aktuelle raus und das neue rein. gehts besser oder einfacher?

Natürlich.
Wenn der Parent an die Kinder delegiert und eben jener Parent Tabs enthält und natürlich das aktive kennt, muss er nichts weiter machen, als an das aktive Tab zu delegieren, statt an alle.
Natürlich kann man genausogut ein visible-Flag für jede Komponente unterstützen und im Fall von Tabs alle außer einem invisible setzen.

Die allgemeine Liste der Kinder zu manipulieren, ist nicht empfehlenswert, da dies nur für bestimmte Operationen sinnvoll ist und alle anderen, die sich auf die ursprüngliche Semantik verlassen, torpediert, bzw. spezielle Workaround benötigt.

Wenn man z.B. ein Objekt löscht, löscht es üblicherweise alle Kindobjekte. Was ist dann mit den nicht sichtbaren Tabs?

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

13.07.2011, 19:39 Uhr

[ - Direktlink - ]
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren

Zitat:
Original von antiByte:
Damit hier keine Gerüchte entstehen:
1. Das Spiel läuft 1a als normale HD-Installation.
2. Das Spiel läuft 1a als WHDLoad Install.

keine Sorge, das ist (inzwischen) jedem bekannt. Hier geht es aber um einen ganz bestimmten User, bei dem so manches nicht funktioniert, was bei jedem anderen keine Probleme bereitet.
Zitat:
Die ROMS von Cloanto sind zudem irgendwie verschlüsselt und somit nicht brauchbar am Amiga.
Womit WHDLoad seit Version 16.5 keine Probleme mehr hat. Wobei es scheinbar nur im Zusammenhang mit der kick40068.A1200, die seit der Amiga Forever 2008 mitgeliefert wird, trotzdem Probleme gibt, zumindest, wenn man die Problemmeldungen in diversen Foren zusammenführt.

Zitat:
Original von antiByte:
Wobei jeder Noch-Amigauser ein breit gefächertes Kickstartarchiv auf HD hat. :)

Und natürlich auch seit Jahren eine lauffähige Installation von UFO, sowohl in der A1200/A4000-, als auch in der CD³²-Version.

Womit sollte man denn auf dem Amiga sonst eine HD füllen, wenn nicht mit allen Kickstart-Versionen, derer man habhaft werden konnte, sowie allen Spielen, die man gekauft hat oder die freigegeben wurden?

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

13.07.2011, 19:17 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

Zitat:
Original von AGSzabo:
Was jetzt? IDs von Objekten oder von Attributen und Methoden?

Sowohl als auch. Alles, was Bestandteil der öffentlichen Schnittstelle ist.
Zitat:
Btw, was ist denn Notify oder bessergefragt, wie funktiniert das? Ich habe eine simple "connect" klasse gemacht, die an die broadcastliste eines ojbekts angehängt wird. Und wenn sie ein SetAttr() vom Objekt empfängt kann sie die AttributID in eine andere wandeln und den Attributwert damit an ein Targetobjekt weitersenden. Ich weiss nicht ob das schon Notifiy ist, ich glaube nicht...
Wahrscheinlich doch.

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

13.07.2011, 10:54 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Reth:weil ich dachte, dass die Fenstergadgets dann von GadTools gemacht würden
Warum sollte gadtools irgendetwas mit Fenstergadgets machen?

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

13.07.2011, 10:53 Uhr

[ - Direktlink - ]
Thema: RFID Um mich funkt es nur noch :)
Brett: Get a Life

Zitat:
Original von jochen22:
Ständige Katastophenmeldungen von Datenklau haben mich zu der
Meinung geführt, daß Internet für Bankgeschäfte nicht sicher
genug ist.

Wenn Daten im großen Stil abgegriffen werden, werden sie ja meist direkt bei der Bank gestohlen und nicht beim Kunden. Du wirst also damit rechnen müssen, dass inkompetente Banken Deine Daten selbst dann verlieren, wenn Du selbst kein Internet-Banking benutzt.

Ich benutze nur das mTan-Verfahren, was ich für einen brauchbaren Kompromiss halte. Dass ein Angreifer Daten im Internet ausspäht und sich gleichzeitig meines Telefons bemächtigt, ist nicht sehr wahrscheinlich, bzw. spräche für einen gezielten Angriff auf meine Person, dem man sowieso auch mit konventioneller Kontoführung kaum etwas entgegensetzen könnte.

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

13.07.2011, 10:43 Uhr

[ - Direktlink - ]
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren

Zitat:
Original von tploetz:
@Fred_AROS:
Also ist der WHDLoad Installer komfortabler als der Original Installer, das habe ich mir auch gedacht,...

Erstens: Nein, das hat Fred_AROS nicht gesagt. Er sagt ganz allgemein, er kann u.U. besser sein.

Zweitens: Du hast den WHDInstaller jetzt mehrfach erfolglos ausprobiert. Wieso glaubst Du immer noch, dass das besser ist, als einfach mal dem Installer, den Du bisher nicht ausprobiert hat, eine Chance zu geben?

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

13.07.2011, 10:40 Uhr

[ - Direktlink - ]
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren

Zitat:
Original von antiByte:
3 volle Seiten ohne Hilfe und dann noch einenn User verarschen,
dazu euer grusliges Halbwissen, echt toll. :(

Na zum Glück bist Du ja jetzt gekommen, um uns zu erleuchten.
Zitat:
@tploetz
1. whdload nach dh0:c kopieren
2. Einstellungsdatei nach dh0:s kopieren
In der Einstellungsdatei können allgemeine Optionen festgelegt werden,
wie z.B. die Taste um WHDLoad zu beenden.
3. Wie ich mitbekommen habe besitzt du einige Amigas, dazu das Forever Packet usw. Lass mit deine EMail zukommen und zu bekommst von mir das benötigte Kickstartarchiv für WHDLoad.

Ja, vielleicht solltest Du den Thread mal Lesen, bevor Du Deinen Senf dazu gibst. Dann würde Dir vielleicht auffallen, dass er alle diese Schritte laut eigener Aussage bereits durchgeführt und das richtige Kickstart-File ausprobiert hat, allerdings ohne Erfolg.

Also, wenn Du meinst, schicke ihm ruhig noch mal das Kickstart-File und wundere Dich darüber, dass auch dieses bei ihm nicht funktionieren wird.
Zitat:
@alle
Wart ihr schon mal auf der WHDLoad Seite?

Wie gesagt, vielleicht solltest Du den Thread mal Lesen, bevor Du Deinen Senf dazu gibst. Hier wird der entsprechende Inhalt verlinkt und zitiert, aber bitte, meinetwegen kannst Du den gesamten Stuss noch mal wiederholen.
Zitat:
Hier werden Phrasen verbreitet, köstlich... der original Installer ist besser, sagt einer der überhaupt noch Amigas verwendet?
Wer sagt das? Hier geht es nur darum, dass der Threaderöffner selbigen gar nicht ausprobiert hat und auch selbst gar nicht den Grund kennt, warum er ihn nicht benutzen sollte. Dass Du vielleicht einen kennst, spielt da überhaupt keine Rolle.
Zitat:
- WHDLoad erzeugt eine Umgebung mit Speicherschutz in der das Spiel läuft und jederzeit durch den Druck einer Taste beendet werden kann.
Ja, das ist ein unglaublicher Vorteil, beim versehentlichen Druck auf eine Taste, ein Spiel abschießen zu können, das ein „Beenden“ Menüpunkt besitzt…
Zitat:
- Die WHDLoad Slaves beinhalten bei vielen Spielen Bugfixes, die sie erst unter Kick 3.1 und z.B. 060 lauffähig machen!
Das ist im Falle von UFO vollkommen unnötig.

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

13.07.2011, 10:28 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

Zitat:
Original von Der_Wanderer:
Warum würde ein Programmierer einen Refresh erzwingen wollen, wenn das GUI Toolkit das für ihn tut?

Er will keinen Refresh erzwingen, sondern den automatischen Refresh bei Bedarf verzögern.
Zitat:
Bei NTUI wird nie sofort gezeichnet, sondern erstmal das Dirty Flag gesetzt. Möglicherweise nehme ich ja viele Änderungen vor, die jedesmal ein Neuzeichnen erfordern würden. … Erst wenn ich alles gesetzt habe und zurückkehre in den NTUI Code, wird dann neu gezeichnet was "dirty" ist.
Ja, genau davon sprach ich. Wenn Deine Änderungen innerhalb eines Callbacks geschehen, es also einen Zeitpunkt gibt, zu dem der Code zum Toolkit „zurückkehrt“, dann kannst Du das problemlos machen. Dann ist es auch die beste mir bekannte Vorgehensweise.

Beim klassischen AmigaOS-API sind Callbacks aber eher die Ausnahme. Deshalb funktioniert es dort nicht so.
Zitat:
Des weiteren denke ich, dass der Aufwand den Tree abzusteigen überschätzt wird. Es ist ja gerade die Tree Struktur, durch die sich die betroffenen Widgets sehr schnell ermitteln lassen, egal ob Mausklick, Refresh etc.
Wenn es um simple Clip-Operationen geht, ja.
Die Optimierung, die ich beschrieben habe, betreffen aber einen Zeichenvorgang. Dabei ist natürlich mindestens jeder Parent teilweise innerhalb des ClipRect und muss seine Zeichenroutinen durchlaufen, auch wenn diese durch das Clipping der einzelnen Operationen effektiv auf eine No-Op hinauslaufen. Aber das System muss hier davon ausgehen, dass jedes einzelne Element an dieser Stelle User-Code mit unbekannten Overhead aufrufen könnte.
Wenn es also einen einfachen Algorithmus gibt, der das umgehen kann, spricht nichts dagegen, diesen zu verwenden.

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

13.07.2011, 01:03 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

Zitat:
Original von Der_Wanderer:
Und z.b. ist es schlecht, dem App Programmierer den Refresh auszubürden, weil er es in 90% der Fälle zu selten oder zu oft macht. Der GUI Toolkit Programmierer weis am besten, wann ein Refresh zu tun ist.

Jein. Das Toolkit, bzw. die Komponenten wissen am besten, wann sie einen Refresh nötig haben, aber wann die Anwendung alle Änderungen getätigt hat, die instantan sichtbar werden sollen, weiß nur die Anwendung.

Ein Automatismus funktioniert dann am besten, wenn alle Aktionen, die einen Refresh nötig machen würden, in Call-Backs wie Event-Handlern ausgeführt werden. Dann kann das Toolkit nach Beendigung der Call-Back Ausführung entscheiden, ob es einen Refresh durchführt oder nicht.

Mit dem klassischen AmigaOS geht das nicht so einfach.
Zitat:
Bei Events z.b. wird der Return Code normalerweise dazu benutzt um anzuzeigen, ob das Event konsumiert worden ist oder anderen Widgets zur Verfügung steht.
Das kann man auch über ein Flag im Event machen.

Zitat:
Zumindest nicht, wenn man sich nicht auf eine Programmiersprache, für die man z.b. Headerdateien erzeugt, festlegen will.
Vor allem nicht, wenn man sich nicht auf Dauer von einer zentralen Autorität abhängig machen will, die den Range gültiger IDs und deren Bedeutung festlegen soll.


Zitat:
Die Strings sind wirklich das letzte, was Performance kostet. Da schlagen die Skin Grafiken um mehrere Zehnerpotenzen mehr zu buche.
Und wenns doch ein Nadelöhr werden sollte, dann hast du ja gezeigt dass man es so effizient wie Integer machen kann.

Zwei Gründe sprechen dafür, es doch zu tun:
1. Man kann es auch für diverse nicht-graphische Operationen verwenden.
2. Einige Programmierer tun sich damit schwer, Strings zu verwenden. Es erhöht somit die Akzeptanz, wenn man auf die Effizienz hinweisen kann, selbst wenn es nur gefühlte Performance ist.

Zitat:
Normalerweise hat das Fenster einen soliden Hintergrund, alle weiteren Widgets (z.B. Gruppen) sind transparent bis dann irgendwann der Button kommt. Klar kann auch eine farbige Gruppe dazwischen kommen, aber wen interessieren schon zwei RectFill statt einem in so einem schon eher seltenen Fall.
Darum geht es dabei ja gar nicht. In dem Fall geht es um den Overhead, den kompletten Baum zu traversieren und alle Elemente gegen das ClipRect zu testen.

Klar, ist meist nichts gegen einen Blit, aber das hängt von den jeweiligen Fähigkeit zur Grafikbeschleunigung ab.

Beim Beispiel von Swing ging es ja noch um etwas anderes. Neben nicht-rechteckigen Formen, gibt es auch sich möglicherweise überlappende Elemente und halbtransparente Overlays.

Und es ist mitunter sinnvoller, die Gruppen nicht als transparent anzusehen. Dann muss man nämlich nicht bis zum Root hochgehen, sondern kann u.U. den direkten Parent als Ausgangsbasis einer Zeichenoperation nehmen. Bei Abwandern des kompletten Baums überspringt man dagegen das Füllen mit der Hintergrundfarbe, wenn diese identisch mit der des Parents ist.

Zitat:
Erstmal sollte man sich drauf konzentrieren, dass alles "korrekt" implementiert ist.
Grundsätzlich schon.
Zitat:
Sonst verbaut man sich schnell den Weg durch optimieren, z.b. hatte ich am Anfang auch das so gemacht, dass die Hintergrund Farbe ermittelt wird vom Button aus. Als dann aber Skins dazu kamen, hat das nicht mehr geklappt,…
Das ist ein Zeichen dafür, dass der später angestrebte Anwendungsfall nicht beim ersten Design berücksichtigt wurde. Eine sorgfältige Planung kann auch Performancefragen von vornherein berücksichtigen, andernfalls muss man mitunter hinterher doch alles neu designen.

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

13.07.2011, 00:37 Uhr

[ - Direktlink - ]
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren

Zitat:
Original von tploetz:
@Maja:
Ich denke WHDLoad ist dazu da um Spiele, die man nicht auf Fesstplatte installieren kann.

Ein Grund, warum ich weniger Probleme mit verschiedenster Software habe als Du, ist der, dass ich zuerst versuchen würde, UFO auf die Festplatte zu installieren und nur wenn das nicht funktioniert, nach einer Lösung wie WHDLoad Ausschau halten würde.

Warum Du es umgekehrt machst...keine Ahnung.

Jedenfalls gilt, je weniger Software ich für den angestrebten Zweck installiere, desto weniger Fehlerquellen gibt es.

Das erleichtert auch die Suche nach Hilfe. Keiner hat hier gesagt, „Installier es doch ohne WHDLoad“, weil natürlich jeder angenommen hat, a) dass Du es schon versucht hast, bzw. es nicht geht oder b) dass es Dir um genau die wenigen Vorteile geht, die WHDLoad in diesem Fall bringt, wie die entfernte Handbuchabfrage.

Hättest Du „Ich will UFO auf die Festplatte installieren“ statt „Problem mit WHDLoad und UFO“ geschrieben, hättest Du schon viel früher am Ziel sein können.

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

12.07.2011, 21:25 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Thore:
Ist NewMenu nicht in gadtools.h definiert? Wär entsprechend auch dann davon ausgegangen daß es die gadtools verwendet.

Ja, aber [GT_]BeginRefresh zeichnet das Fenster und nicht die Menüs neu. Die Menüs sind während des Refresh-Vorgangs nicht zu sehen.

Es geht dabei ausschließlich um Gadgets. Und Menüs sind keine Gadgets. Nicht beim AmigaOS.

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

12.07.2011, 21:22 Uhr

[ - Direktlink - ]
Thema: Problem mit WHDLoad-Spiel UFO AGA unkown
Brett: AROS und Amiga-Emulatoren

Zitat:
Original von Maja:
Es würde mich schon sehr wundern, wenn ausgerechnet UFO nur auf einem (simulierten) A1200 laufen würde. Kickstart 3.1 ist auf allen 68k-Amigas gleich (Befehlssatz, Funktionen).

Das hat nichts mit UFO zu tun, sondern mit dem entsprechenden WHDLoad-Client. Davon gibt es einige, die ein ROM-Image verwenden, um es vor dem Start des Spiels zu patchen. Und das geht dann nur mit bestimmten Versionen.

UFO selbst läuft auf verschiedenen ROM-Versionen, auch von Festplatte.

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

12.07.2011, 20:48 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

Zitat:
Original von AGSzabo:
Man könnte einfach auch in den userevent methoden die clips einbauen (systemseitig), ...

Events und Clipping haben nichts miteinander zu tun.
Zitat:
problem: ein hook, der zum beispiel einen virusscan-task startet, der task soll den progressbar auffrischen. da brauchts dann doch ein direktes refresh ... wie könnte das gehen? dem setattr vom scantask aus ein refresh hinterhersenden?
Ja, so macht es Intuition. Ruft man SetAttrs[A] oder SetGadgetAttrs[A] auf, teilt der Rückgabewert mit, ob die Änderung ein visuelles Update erforderlich macht oder nicht. Es bleibt trotzdem dem Aufrufer vorbehalten, die Refresh-Funktion aufzurufen, d.h. er kann auch erst einmal ein Dutzend Änderungen durchführen, bevor er einen visuellen Refresh durchführt.

Sagte ich nicht schon einmal, dass es sich lohnt, die existierenden Lösungen zu studieren, bevor man seine eigene zu machen versucht? ;)

Zitat:
Original von Der_Wanderer:
Alle IDs und Notifys sind bei mir Strings. Da habe ich lange drüber nachgedacht, bin aber auf keine bessere Lösung gekommen.

Es gibt ja auch keine bessere.
Wenn es um Effizienz geht, lässt man das Toolkit eine eigene Hashmap aufbauen, die für jeden String einen kanonischen Eintrag besitzt, durch den jeder String bei der Initialisierung eines Clients (oder dem Laden einer XML-Datei) ersetzt wird.
Dann muss man keine String-Vergleiche anstellen, sondern lediglich die Adressen der Strings vergleichen, da dann ja gleiche Strings immer auf dieselbe kanonische Instanz zeigen.
Ist also exakt genauso effizient wie Integer-Werte.
Zitat:
Falls du vorhast, transparente Widgets zu haben (z.b. Buttons mit runden Ecken), dann musst du sowieso beim Root anfangen zu zeichnen, da ja der Hintergrund auch neu gezeichnet werden muss, den dein runder Button aber an den Ecken gar nicht kennt.
Nein, es muss beim ersten nicht-transparenten Parent gestarten werden. Der Root wäre nur der worst-case. Ich hatte ja dazu schon oben etwas geschrieben, wie Swing es macht.

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

12.07.2011, 20:20 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Reth:
Heisst das nun, ich habe GadTools-Gadgets (in Form der Menüs) oder nicht?

Nein, Menüs sind keine Gadgets.
Gadgets sind die Dinger, bei denen Du, wenn Du gadtools benutzt, als allererstes CreateContext() aufrufen musst, das ein Pseudo-Gadget erzeugt, das immer als allererstes in der Liste vor allen anderen gadtools-Gadgets steht, die Du via CreateGadget[A]() erzeugt.

Wenn Du selbiges nicht machst, hast Du auch keine solchen Gadgets.

Wenn Du welche hättest, müsstest Du übrigens nicht nur GT_... Funktionen für den Refresh, sondern auch die GT_... Funktionen für die Verarbeitung von intuition-Messages verwenden.

Aber VisualInfo und Menüs betrifft das nicht.

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

11.07.2011, 19:24 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Reth:
Mit ganz normal meinte ich lediglich BeginRefresh() und EndRefresh() anstelle von GT_BeginRefresh() bzw. GT_EndRefresh().

Ich versuch's noch mal anders: Benutzt Du gadtools-Gadgets?
In diesem Fall musst Du die GT_… Funktionen benutzen, ansonsten auf keinen Fall.

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

11.07.2011, 19:15 Uhr

[ - Direktlink - ]
Thema: SSD mit oder ohne NCQ ?
Brett: Andere Systeme

Ich denke auch, grundsätzlich ist NCQ für SSDs bei Schreibzugriffen sinnvoll. Allerdings bedeutet, dass eine SSD NCQ beherrscht, erst mal nur, dass sie die Protokolle unterstützt. Es besteht für diese keine Verpflichtung, auch wirklich Zugriffe vorteilhaft umzusortieren.

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

11.07.2011, 19:06 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

Zitat:
Original von AGSzabo:
Wie 'geht' eigentlich das klippen im system? Ich meine immer, dass es zu lange dauern würde, alle koordinatenm auch von schrägen linien oder kreisen auf die maße der clips zu beschneiden. gibt es eine andere methode?

Es gibt natürlich immer verschiedene Methoden.
Im AmigaOS (Classic) basiert alles auf Rechtecken. Um eine Linie, ob schräg oder nicht, auf ein Rechteck zu beschneiden, muss man nicht viel tun. Und im Falle eines ClipRects, das genau ein Gadget von vielen umfasst, wird ja eh alles noch viel einfacher, weil die meisten Objekte komplett außerhalb des Bereichs, einige komplett innerhalb und (fast) gar keine teilweise innerhalb des Bereichs liegen.

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

11.07.2011, 18:43 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

Zitat:
Original von AGSzabo:
Wenn ein objekt nur einen teil von sich neu zeichen möchte, zb nur den rahmen eines buttons im geklickten also inversen zustand?

Selbst bei so primitiven Gadgets wie bei Gadtools ändert sich beim Anklicken standardmäßig die Hintergrundfarbe und erzwingt somit ein komplettes Neuzeichnen der Buttons.

Ansonsten kann man natürlich durch die Wahl der Clipping-Bereiche auch nur Teile eines Gadgets aktualisieren.

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

11.07.2011, 18:35 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

Bei Java/Swing ist es so, dass wenn eine einzelne Komponente direkt gezeichnet werden soll, was i.A. nur beim Ziehen mit der Maus oder ähnlichem angewendet wird, diese Komponente nach oben wandert und überprüft, ob eine andere Komponente sie überlappt. Der Zeichenvorgang startet dann bei der ersten nicht überlappten Komponente, sinnigerweise natürlich auch mit gesetztem Clipping auf dem Graphics Kontext.

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

11.07.2011, 13:13 Uhr

[ - Direktlink - ]
Thema: OOP-GUI Systeme und Content-Clipping
Brett: Programmierung

Ich weiß ja nicht, wie Du das bisher gemacht hast, aber normalerweise werden GUI-Systeme doch immer so implementiert, dass der Zeichenvorgang bei der Wurzel beginnt und den Baum abwandert, d.h. die Parents rufen die Zeichenmethode ihrer Kinder selbst auf und haben somit die Möglichkeit, ein weiteres Clipping zu dem Grafikcontext, den sie ihrerseits von ihrem Parent übergeben bekommen haben, hinzuzufügen (und nach Beendigung wieder zu entfernen).
Genau so wird es doch auch mit dem Koordinatensystem gemacht, das immer relativ zum direkten Parent verwendet wird. Bzw. mit jeder anderen visuellen Eigenschaft (Font, Vorder- und Hintergrundfarbe).

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

11.07.2011, 12:58 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Reth:
Erst wenn ich die Begin-/EndRefresh-Aufrufe weglasse, dann klappt das blitten (NOCAREREFRESH-Window)...

NoCareRefresh und die Frage, ob Du Begin/EndRefresh benutzt, haben nichts miteinander zu tun. Das erste beeinflusst nur, ob Du Messages bekommst, das andere dient dem optimierten Zeichnen. Du solltest diese Dinge also auch unabhängig voneinander auf ihre Auswirkungen überprüfen.

Du solltest außerdem beachten, dass das Logging in eine Textkonsole problematisch werden kann, da diese unter Umständen die Meldung auf den Bildschirm bringen will und das mit den durch Deinen BeginRefresh gelockten Layern interferiert. Da die Ausgabe meist gepuffert ist, treten solche Problem möglicherweise nicht schon bei der ersten Meldung auf. Nur eine Möglichkeit...
Zitat:
Vielleicht sollte ich statt der Gadtools-Begin-/EndRefresh Aufrufe mal die "normalen" probieren? Habe allerdings Gadgets, die ganz normal mit struct Gadget arbeiten, kein Boopsi, Reaction o.ä.. Daher bin ich davon ausgegangen, dass ich auch die Gadtools-Refresh-Aufrufe benötige!
Die Gadtools-Refresh-Aufrufe dienen einzig und allein den über Gadtools angelegten Gadgets. Mit "ganz normal mit struct Gadget" hat das nichts zu tun.

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

11.07.2011, 12:44 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Reth:
Das Beispiel findet sich hier und auf allen anderen ähnlich gemachten Sites zur Beschreibung des "klassischen" Amiga-APIs.

Du musst aber auch lesen, was da steht. Das Beispiel dient ausschließlich für den Fall, dass man EndRefresh mit dem Parameter FALSE aufruft, was, wie im darüberstehenden Text erklärt, äußerst problematisch ist. Da das Beispiel aber in keinster Weise erklärt, warum man das überhaupt tun sollte, außerdem, wie von Dir ebenfalls bemerkt, gar nicht gesagt wird, wo die Clip-Regionen denn herkommen, somit das Beispiel für die Lösung des Problems gar nicht ausreicht, gibt es nur eine mögliche Schlussfolgerung:

Rufe niemals EndRefresh mit FALSE auf und vergiss das Beispiel.

Zitat:
Eine Veroderung meiner ClipRegion mit der ggf. bereits vorhandenen erfolgt noch nicht.
Nur noch mal als Gedächtnisstütze: BeginRefresh dient einem primären Zweck: die Damage-Liste in eine aktive Clip-Region umzuwandeln. Wenn Du also Deine Clip-Region vor dem Aufruf setzt, gibt es nur zwei Möglichkeiten: a) die Regionen werden effektiv verknüpft oder b) Deine vorher gesetzt Region wird übergebügelt.

Was davon nun wirklich passiert, sollte man wissen, bevor man sich entscheidet, es so zu tun.

Zitat:
... hatte ich hier das Doublebuffering so verstanden, dass neben der BitMap des Fensters noch eine nicht sichtbare benutzt wird, die dann immer neu aufgebaut und ins Fenster geblittet wird.
Das ist eine mögliche Vorgehensweise, entspricht aber nicht der Art, wie die angesprochenen Spiele es umsetzen, bzw. wie Thore es beschrieben hat (v.a. mit Screen-Switching)
Zitat:
Deiner Frage entnehme ich mal, dass dies nicht die beste Lösung ist.
Das hast Du falsch verstanden. Ein Offscreen-Buffer ist nicht gleich Double-Buffering.

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

08.07.2011, 23:56 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Reth:
@Thore:
Das mit dem DoubleBouffer muss ich mir mal im Hinterkopf behalten,…

Das im Hinterkopf zu behalten bringt aber gar nichts, denn mit DoubleBuffer kannst Du alles das, was Du jetzt gerade versuchst, vergessen. Wenn Du mit Swap-Buffern arbeitest, muss natürlich jedes Update beim nächsten Zeichenvorgang in den anderen Buffer wiederholt werden (falls man nicht eh immer alles neu zeichnet), da man andernfalls beim Umschalten veraltete Inhalte wiederherstellen würde.

Mit dem systemeigenen Refresh-Mechanismus funktioniert das nicht, da der bei einem erfolgreichen Ende alle Damage-Bereiche verwirft und prinzipiell nicht dazu gebracht werden kann, diese für zwei Updates zu behalten, da nicht zwischen altem und neuem Damage unterschieden werden kann.

Was aber nicht so schlimm ist, da sich anwendungsfremde Fenster, deren Besitzer nichts von der Notwendigkeit, in zwei Buffer zu zeichnen, weiß, ja ohnehin verbieten. Damit braucht man auch von diesen verursachten Damage nicht zu berücksichtigen.

Zitat:
Dazu noch mit verschachtelten Aufrufen, so dass innerhalb eines std:out eine Objektmethode gerufen wird, die selbst auch noch ein std:out macht! Weiss nicht, ob das gesund ist? Habe mir mal kurz Log4C++ angesehen,…
Ob Du ein Framework benutzt oder nicht, ändert kaum etwas daran, dass Log-Aufrufe, egal wie sie umgesetzt sind, die ihrerseits neue Log-Aufrufe triggern, ziemlich gefährlich sind.

Zitat:
Original von Reth:
(Sorry Holger, dass mit den InstallClipRegion außerhalb von Begin-/EndRefresh hab ich in allen OS-Beispielen auf innoidea usw. so gesehen!)

Ähm, Du musst Dich nicht bei mir entschuldigen, mir ist es doch egal, ob Du es so oder so machst. Du solltest Dich nur fragen
Funktionieren eigentlich diese Beispiele unter AOS4?
Ist „es stand so in einem Beispiel“ als Erklärung ausreichend, was Dein Code macht?
Was macht es denn nun? Wird die Clip-Region überhaupt verwendet, wird sie mit der Damage-Region verknüpft, wenn ja, via AND oder OR, und wieso erklärt das Beispiel (bzw. dessen Autor) nicht, warum das so gemacht wurde und was passieren soll?

Zitat:
Original von Thore:
Benutzt Du eine Grafikkarte, kannst Du generell FastRAM benutzen.

Na ja, Du benutzt, was auch immer das Grafiksystem Dir gibt, wenn Du eine dazu kompatible BitMap anforderst. Auf den Typ des Speichers hast Du gar keinen direkten Einfluss,
Zitat:
Wenn die DB Bitmap nicht im ChipRAM liegt, kannst Du sie zwar nicht anzeigen aber wohl noch davon auf eine ChipRAM Bitmap kopieren. Dann funktioniert für den DB switch zwar der Blitter nicht, aber ich denk das ist verschmerzbar.
Ähem, wenn Du eine komplette BitMap via CPU in eine sichtbare BitMap kopierst, wozu dann überhaupt noch das Double-Buffering?
Zitat:
Die schnellere Methode ist das Screen-Switchen. Dabei wird im hinteren Screen gezeichnet, dann der Screen nach vorn geholt, dann wird auf den hinteren Screen (der vorher der vordere war) wieder gezeichnet, und dann nach vorn geholt.
Es gibt Methoden, um DoubleBuffering mit einem Screen durchzuführen. Das interferiert dann auch nicht mit dem manuellen Screen-Switching des Anwenders.

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

08.07.2011, 20:35 Uhr

[ - Direktlink - ]
Thema: Neue Frage zu Überdeckungen
Brett: Programmierung

Zitat:
Original von Reth:
Der Compile unter AOS4 läuft durch (mit -D__USE_INLINE__, da ich eigentlich 68k-kompatibel programmiere) und nach dem Start friert das System so ein, dass sich nicht einmal mehr der Mauszeiger bewegen lässt!

Und ein aus derselben Version gebautes 68k-Binary läuft unter AOS4 fehlerfrei?

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

06.07.2011, 12:21 Uhr

[ - Direktlink - ]
Thema: Proggen auf Win
Brett: Programmierung

Zitat:
Original von Ralf27:
Ich brauch ja die beiden Dateien im LIB-Verzeichniss.

Sie müssen auch da sein.

Vielleicht sind sie nur zu alt.

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

05.07.2011, 20:54 Uhr

[ - Direktlink - ]
Thema: Proggen auf Win
Brett: Programmierung

@Ralf27:
Versuch doch mal, das Programm in der Shell aufzurufen. Es ist i.A. hilfreich, wenn man die Fehlermeldungen sieht, die ein Programm ausgibt. Darauf, dass diese Meldungen auch angezeigt werden, wenn Du vom Desktop, bzw. irgendeiner Art Programmmanager das Programm startest, würde ich mich nicht verlassen.

Wenn da nichts sinnvolles steht, hilft es mitunter, statt programm einfach mal strace programm einzugeben. Das ist das Äquivalent zu SnoopDos. Sei aber darauf gefasst, dass es seeehr ausführlich werden kann.

--
Good coders do not comment. What was hard to write should be hard to read too.
 
 
Erste << 26 27 28 29 30 -31- 32 33 34 35 36 >> Letzte Ergebnisse der Suche: 8116 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.
.