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 << 6 7 8 9 10 -11- 12 13 14 15 16 >> Letzte Ergebnisse der Suche: 1229 Treffer (30 pro Seite)
Der_Wanderer   Nutzer

30.05.2010, 11:02 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

@inq:

? Was möchtest du uns damit sagen? Dass BlitzBasic2 einen Bug hat?
BB2 hat massig Bugs, sonst hätten wir ja in Amiblitz2/3 nicht so viel zu tun gehabt ;-)

> und damit getötet:
Da hast du aber schnell aufgegeben ;-)

> kann jetzt alles neu machen (weil: 10 Jahre alt).
Software ist keinem Alterungsprozess unterworfen (höchstens der Datenträger...). Die Ansprüche ändern sich nur. Dann müsstest du aber auch bei erfolgreicher Fertigstellung vor 10 Jahren alles neu machen...

Thores These ist, dass Bugs in High-Level APIs zu größeren Problemen führen als Bugs in Low-Level APIs. Interessant. Klingt auch auf den ersten Blick intuitiv richtig. Aber ist das wirklich so? Bin ich im Low-Level Falle nicht genauso aufgeschmissen, nur weis ich etwas genauer was nicht funktioniert? Und rechtfertigt das den Mehraufwand im Falle wenn kein Bug auftritt?

Andersherum betrachtet, wenn ich z.B. ein Bild via DT laden will, dann kann ich unglaublich viele Bugs selbst produzieren (im Vergleich zu einem "LoadImage", wo ich höchstens den Dateinamen falsch schreiben kann). Wäre es nicht besser, wenn jemand, der sich besser auskennt als ich, das in eine Robuste "LoadImage" Funktion gegossen hat? Und wenn diese Funktion von Vielen benutzt wird, sollte sie dann doch stabiler sein als meine Home-Brew "MyLoadImage" die nur ich benutze?

--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

29.05.2010, 22:17 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

@Thore:
> Dieser Code hat Dich Wochen gekostet?
> Dann weiß ich warum Du eine andere API willst
Du (und möglicherweise gar nicht mal so wenige Amiganer) magst das vielleicht cool finden, wenn man so richtig "hardcore" sein muss um ein Bild zu laden. Der Rest der Menschheit fände diesen Code eher ein Armutszeugnis für das OS oder würde sich die Stirn reiben was "die da so treiben auf dem Amiga...".

Dazu kommt, dass ja noch nicht einmal alles sichtbar ist, eigentlich müsste ich noch image_Create dazu posten, was die eigentliche Bitmap anlegt usw.

Und wie immer, der Teufel steckt im Detail. Die Funktion ist vor allem deshalb so lange, weil sich nicht alle Datatypes auf nicht allen Plattformen gleich verhalten. Das zu testen, wenn man nicht gerade Vollprofi mit OS3, OS4, MOS und AROS nebeneinander auf dem Schreibtisch stehen hat, ist nicht einfach. Und diese Zeit müsste theoretisch jeder Entwickler erstmal "verheizen", wenn sein Code überall funktionieren soll. Das ist total dämlich und sollte einmal in eine höher liegende Schicht eingefangen werden.


--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

29.05.2010, 22:03 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

.. und übrigends Datatpyes waren ja damals genau der Schritt den ich hier vorschlage, die Bemühungen zu bündeln und wiederverwertbar zu machen.

Nur ist man einerseits über das Ziel hinausgeschossen (Datatypes für alles und jeden, aber gleiches Interface) und gleichzeitig zu Low Level in der Angst es gäbe Aspekte die man sonst nicht kontrollieren könnte.

In den meisten Fällen werden die DT benutzt, um ein Bild zu laden. Deshalb solle es ein einfaches "Load" geben. Heist ja nicht, dass es auch weitere Constructoren geben könnte für CImage, z.B. wäre folgende denkbar:
code:
CImage img = New("Dh0:test.jpg"); <= von Datei

CImage img = New("Dh0:test.gif",4); <= von Datei, Bild # 4

CImage img = New(*screen,x,y,width,height); <= grabben vom Screen

CImage img = New(width,height,rgb); <= blankes Bild

CImage img = New(Bitmap, Viewport); <= von Bitmap holen

CImage img2 = New(img); <= duplizieren

...


--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de



[ Dieser Beitrag wurde von Der_Wanderer am 29.05.2010 um 22:07 Uhr geändert. ]
 
Der_Wanderer   Nutzer

29.05.2010, 21:50 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

@Thore:

Schau dir mal das CImage Beispiel von oben an. Das ist einfach, und kann sich jeder in ein paar Minuten selbst austüfteln, Online-Docu vorrausgesetzt.

Und jetzt schau dir nochmal den Code an via Datatype (und das ist nur Laden). Das hat mich Wochen gekostet, bis das dann überall lief. Wenn man dann noch betrachtet, was DT alles nicht können (Speichern, Qualitativ Resizen, Filter anwenden, Drehen, Croppen, Alpha Channel, Hineinzeichnen etc. etc.), dann ist das alles andere als mächtig.

code:
Function.l image_LoadViaDT{image.l,filename.s,imgnum.l}
DEFTYPE.BitMapHeader *bmhdp
DEFTYPE.BitMap *bmap
DEFTYPE.pdtBlitPixelArray DTM
succ.l = False
If imgnum<0 Then imgnum=0
tag5.tag5\ti_Tag = #PDTA_DestMode, #PMODE_V43, #DTA_SourceType,
                   #DTST_FILE, #DTA_GroupID, #GID_PICTURE,
                   #PDTA_Remap, False, #PDTA_WhichPicture,imgnum,#TAG_DONE,0
*DTPic._Object = NewDTObjectA_ (&filename.s,tag5)
If *DTPic
  tag5.tag5\ti_Tag = #PDTA_BitMapHeader,&*bmhdp,#TAG_DONE,0
  GetDTAttrsA_ *DTPic,tag5
  If image_Create{image,*bmhdp\bmh_Width,*bmhdp\bmh_Height}
    If image_Lock{image}

      ; try to get as ARGB immediately, good datatpyes support this, but not all!
      ;If *bmhdp\bmh_Depth>8 ; dont even try if depth <=8
        DTM\MethodID            = #PDTM_READPIXELARRAY
        DTM\pbpa_PixelData      = \raw_ptr          ; /* The pixel data to transfer to/from */
        DTM\pbpa_PixelFormat    = #PBPAFMT_ARGB     ; /* Format of the pixel data (see "Pixel Formats" below) */
        DTM\pbpa_PixelArrayMod  = \bpr              ; /* Number of bytes per row */
        DTM\pbpa_Left           = 0                 ; /* Left edge of the rectangle to transfer pixels to/from */
        DTM\pbpa_Top            = 0                 ; /* Top edge of the rectangle to transfer pixels to/from */
        DTM\pbpa_Width          = *bmhdp\bmh_Width  ; /* Width of the rectangle to transfer pixels to/from */
        DTM\pbpa_Height         = *bmhdp\bmh_Height
        If DoMethodA (*DTPic,&DTM) Then succ = True
      ;End If

      ; ok, try to read out the bitmap if ARGB failed...
      If succ=False
        tag5.tag5\ti_Tag = #PDTA_ColorRegisters,&colorMap.l,#TAG_DONE,0
        If GetDTAttrsA_ (*DTPic,tag5)
          tag5.tag5\ti_Tag = #PDTA_BitMap,&*bmap,#TAG_DONE,0
          If GetDTAttrsA_ (*DTPic,tag5)
            *layerinfo.Layer_Info = NewLayerInfo_
            If *layerinfo
              *layer.Layer = CreateUpfrontHookLayer_ (*layerinfo,*bmap,0,0,
                               *bmhdp\bmh_Width-1,*bmhdp\bmh_Height-1,
                               0,#LAYERS_NOBACKFILL,0)
              If *layer
                *rp.RastPort = *layer\rp
                If *rp
                  image_Unlock{image}
                  succ = image_CutRP{image,*rp,0,0,*bmhdp\bmh_Width,*bmhdp\bmh_Height,-1,-1,-1,colorMap}
                  If succ Then image_Lock{image}
                End If
                DeleteLayer_ 0,*layer
              End If
              DisposeLayerInfo_ *layerinfo
            End If
          End If
        End If
      End If

      ; Try READPIXELARRAY LUT8, if we couldn't catch the bitmap (outch!)
      If succ=False
        penArray8.l = AllocVec_(*bmhdp\bmh_Height * *bmhdp\bmh_Width,#MEMF_ANY)
        lut.l       = AllocVec_(256*4,#MEMF_CLEAR)
        If penArray8><0 AND lut><0
          DTM\MethodID            = #PDTM_READPIXELARRAY
          DTM\pbpa_PixelData      = penArray8         ; /* The pixel data to transfer to/from */
          DTM\pbpa_PixelFormat    = #PBPAFMT_LUT8     ; /* Format of the pixel data (see "Pixel Formats" below) */
          DTM\pbpa_PixelArrayMod  = *bmhdp\bmh_Width  ; /* Number of bytes per row */
          DTM\pbpa_Left           = 0                 ; /* Left edge of the rectangle to transfer pixels to/from */
          DTM\pbpa_Top            = 0                 ; /* Top edge of the rectangle to transfer pixels to/from */
          DTM\pbpa_Width          = *bmhdp\bmh_Width  ; /* Width of the rectangle to transfer pixels to/from */
          DTM\pbpa_Height         = *bmhdp\bmh_Height
          If DoMethodA (*DTPic,&DTM)
            tag5.tag5\ti_Tag = #PDTA_ColorRegisters,&colMap.l,#TAG_DONE,0
            If GetDTAttrsA_ (*DTPic,tag5)
              For pen.l=0 To (1 LSL *bmhdp\bmh_Depth)-1
                *CReg.ColorRegister = colMap + 3*pen
                Poke.l lut + (pen LSL 2),((*CReg\red&$00FF) LSL 16) |
                ((*CReg\green & $00FF) LSL   | (*CReg\blue & $FF)
              Next
              For y.l = 0 To *bmhdp\bmh_Height -1
                For x.l = 0 To *bmhdp\bmh_Width -1
                  pen.l = Peek.b(penArray8+y**bmhdp\bmh_Width+x) & $FF
                  Poke.l \raw_ptr+y*\bpr+(x LSL 2),
                   (Peek.l(lut+(pen LSL 2)) );& $FEFEFEFE) LSR 1
                Next
              Next
              succ.l = True
            End If
          End If
          If penArray8 Then FreeVec_ penArray8 : penArray8 = 0
          If lut       Then FreeVec_ lut       : lut       = 0
        End If
      End If
      image_Unlock{image}
    End If
    If succ=False Then image_Free{image}
  End If
  DisposeDTObject_ (*DTPic)
End If
Function Return succ
End Function


--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de




[ Dieser Beitrag wurde von Der_Wanderer am 29.05.2010 um 21:54 Uhr geändert. ]
 
Der_Wanderer   Nutzer

29.05.2010, 20:48 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

@gerograph:

1. Alle Amiblitz Versionen verlagen min. reqtools.library v39. Nur dass Amiblitz3.5 dir das mitteilt. 3.12 könnte irgendwann crashen.

2. Ab 3.5 sollte der Debugger auch unter OS4 gehen. Ist aber weiterhin ein heikles Thema, scheint sich auch von OS4 update zu update immer mal wieder zu ändern.

3. Ich benutze den nicht. Ich bin mir jetzt nicht sicher, ob der für OS4 gedacht ist. Evtl. sollte man das in die "rote Liste" aufnehmen. (Custom Chip abhängige Befehle werden rot statt blau dargestellt, allerdings basiert das auf einer empirisch ermittelten Liste).

4. Wenn du nirgends auf Work verweisst, evtl. in Compilersettings in den Residents? Ansonsten wäre das ein Bug, schaue ich mal nach, sowas sollte natürlich nicht sein.

5. Ich frage mal CJ.

Insgesamt: Unbedingt auf 3.5 updaten. Da sind Batzilionen von Bugfixes und Verbesserungen drin.

--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

29.05.2010, 20:26 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

@Thore:

> Du musst immer die Koordinaten angeben bei Blitting, das ist doch gerade der Sinn
Ja, die CImage Klasse sollte natürlich an x/y Koordinaten blitten können. Wenn man eine App baut sollte man sowas aber gar nicht benötigen, sonst hat das GUI Toolkit bereits versagt.
Das ist dann eher für die Game API interessant. Unter Android verwende ich jede Menge Bilder, aber habe noch nie selbst eins blitten müssen.
Nicht einmal laden. Ich habe lediglich die Buttons/GUI Elemente mit den PNG Dateien verknüpft.

> So etwas gibt es allerdings bereits. Es nennt sich MUI
Ja, und es ist tot (für 68k) und Closed-Source. MUI ist im Prinzip die richtige Richtung, aber man merkt MUI das Alter schon an. Das GUI bauen muss noch deutlich einfacher sein und gleichzeitig noch flexibler. (ja, das geht).

> Auf Windows passen sich die Komponenten mit sogenannten "Anker" (Anchors) an
Ja, das ist Quark. Man braucht ein richtiges GUI Toolkit mit Auto-Layout. So wie MUI.

> Wäre eine IDE, die die Event-Zuordnung und dergleichen automatisch bereitstellt nicht sinnvoller als über eine neue API nachzudenken?
Das geht Hand in Hand. Die GUI API muss natürlich da sein, da man immer programmatisch eingreifen will. Aber grundsätzlich sollte die GUI mit einem Builder gebaut werden. Am besten der Speichert das dann als XML, was von der GUI API interpretiert werden kann.

Es geht ja erstmal auch nicht darum, alles besser, schneller und höher zu machen, sondern das Vorhandene (und sei es MUI) einfacher nutzbar zu machen. Und zwar so radikal einfacher, dass kein OS-Variante drum herum kommt. Das heisst ja auch nicht, wenn man z.b. irgendwas ganz ausgefuchstes Spezielles vor hat, nicht die "ganz normale" AmigaOS API benutzen kann. Nur in 99% der Fällte braucht man das nicht.

Z.b.

Bitmap *bmp = CImage.GetBitmap()

würde einem Zugriff auf die interne Bitmap Structure geben, denn das CImage erfindet (und soll auch nicht) das Rad nicht neu, sondern bentutzt ja Bitmaps, RastPorts, Datatypes etc.

--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

29.05.2010, 15:21 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

@Thore

Deine Funktionen waren mir (und vermutlich auch Holger, Whose etc.) schon sehr schnell klar. TextW() als Wide-Character Variante von Text, und ScaleBitmap() eben um eine Bitmap zu skalieren. Da muss man nicht lange Raten wie die Parameter aussehen. Das ist ja auch per se nicht schlecht.

Aber gehe jetzt mal zwei, oder besser drei Schritte zurück.

Willst du wirklich eine Zeile Text an die Stelle x,y eines bestimmten RastPortes blitten?
Du denkst, jetzt vielleicht ja. Dann gehe noch einen Schritt weiter zurück. Und jetzt?

Nein, eigentlich nicht. Wenn du für eine GUI Koordinaten ausrechnen musst, dann ist das Kind schon in den Brunnen gefallen. Du möchtest ein Fenster haben mit einem schön platzierten Text. Vielleicht soll es sogar ein Fließ-Text sein, der sich der Fenstergröße anpasst, evtl. wenns zu klein ist ein Scroller aufpoppt etc. Das willst du nicht selbst alles berechnen und mit Text() hinblitten (Es sei denn du bist der GUI Toolkit Entwickler). Das ist eine große Bürde die du dir aufgeladen hast. Damit halst du dir die ganze Layout Logistik auf.
Das verstehen viele Anfänger nicht. Sie wollen keine Layout-Engine, fühlen sich eingeschränkt, viiiel zu kompliziert, wenn man doch direkt auf Koordinaten blitten könnte. Aber mit jedem Parameter, den man einstellen darf, bekommt man auch die Pflicht sich darum zu kümmern, und das kostet viel Zeit, ist jedesmal was selbst-gebackenes, also Cross-App inkonsistent und sehr fehleranfällig.
So viele Apps im Aminet, wenn man den Fenstertitel 2 Pixel höher macht verrutscht alles, Buttons hängen über den Fensterrahmen raus etc., und trotzdem hatten die Entwickler mehr Arbeit als wenn sie das mit einem Toolkit gemacht hätten.

Wenn man ein GUI Toolkit hat, das richtig gemacht ist und flexibel, dann braucht man nur ein einziges, egal ob es eine systemkonforme App im Systemweiten Look ist oder ein geskinntes Options-Menu in einem Spiel.

Ok, nun wie stelle ich mir das vor?

So in etwa wie ich die A/A++ API plane. Leicht OOP, aber kein muss und nicht übertrieben so dass keiner mehr durchblickt, und dass es selbstverständlich auch in nicht-OOP Sprachen genutzt werden kann. Jede Klasse könnte eine Shared Library sein.

Beispiel:

CImage Class
code:
Import "CImage"                         ; use CImage Class

 CImage img = New()                      ; declare an image object

 img.Load("DH0:Pics/image.png")          ; load from disk
 img.Resize(800,600)                     ; resize to 800x600 pixels
 img.Save("DH0:Pics/image.jpg",'JPEG')   ; save as JPEG

 img.Delete()

 End                                     ; end of program


CSound Class
code:
Import "CSound"                         ; use the CSound Class

 CSound snd = New()                      ; declare a sound object

 snd.Load("DH0:SFX/Bing.wav")            ; load a sound from disk
 snd.Play()                              ; play the sound
 snd.Resample(44100)                     ; resample the sound to 44100kHz
 snd.Save("DH0:SFX/Bing.aiff",'AIFF');   ; save the sound as AIFF
 
 snd.Delete()

 End                                     ; end of program


So in etwa für Multimedia Objekte. GUI Toolkit ist natürlich wieder was anderes, der würde Z.b. CImage benutzen für GUI Grafiken. Und Dinge wie DOS und Exec sind natürlich auch wieder anders, kann man aber in ähnlichem Stil durchziehen, z.b.

code:
Import "CThread"

CThread thrd = New()
thrd.SetEntryPoint(&myFunction)
thrd.Run()
...
thrd.Break()
thrd.Delete()

End



--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

29.05.2010, 12:00 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

@Thore
Nahh!

Das wäre eine linear Fortführung der bestehenden API. Klar, damit kann man mehr machen, bleibt aber grundsätzlich auf dem selben Niveau stehen.

Es muss eine Ebene drüber ansetzen.

Evtl. nerve ich, aber ich möchte wieder Android anführen.

Da habe ich nun schon eine recht große App gemacht, mit viel Graphic und Audio. Auf einmal frage ich mich:
Habe ich mich um Bitmap Formate kümmern müssen?
Habe ich Text an irgendwelche Pixel Koordinaten geblittet?
Habe ich I/O Requests allociert und Felder mit heiklen Daten ausgefüllt?
Habe ich irgendwleche Temp-RastPorts erstellt, Pens oder DrawModi gesetzt?

Nein. Und habe ich was vermisst? Nein.
Oder kann die App deshalb irgendwas nicht? Nein.

Weil die API eine Schicht drüber liegt und das für mich erledigt. Dafür kann ich kaum Fehler machen und mich auf die eigentliche App konzentrieren.

--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

28.05.2010, 22:12 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

One Man Show ist schlecht. Selbst Two-Man kann von heute auf morgen aus sein (siehe Amithlon).
Ich würde sagen 4-5 Entwickler, quelloffen und frei, dann ist es nicht so einfach tot zu kriegen, solange die Community Interesse daran hat.
Es wird wohl auch keiner Experte auf allen Gebieten quer durch das IT Universum sein, und um extreme oder Verirrungen zu vermeiden müssen mehrere Augen drüber gucken.
Keiner will sein Programm, in das er viele viele Stunden Zeit investiert, auf die Laune eines Alleinunterhalters ausliefern.


--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

27.05.2010, 23:10 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

Ich habe nun ein Release von Amiblitz3.5 zusammengeschraubt:

https://sourceforge.net/projects/amiblitz3/files/

Das ist noch kein richtiges Release, deshalb noch "pre".

Das ein oder andere muss noch abgeschliffen werden.
Aber es gibt nun dank Bernd ein StormWizard Template.
--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

27.05.2010, 20:59 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

> Also, was spricht dann dagegen, Deine AmiBlitz-Includes in C-Code zu gießen?
1. Für mich persönlich keinerlei Nutzen und hunderte Stunden Arbeit.
2. Für alle andern, Akzeptanz. Wer würde das nutzen, wer es nicht jetzt schon mit Amiblitz nutzt?
3. Qualität. Die Amiblitz Includes sind schon gut und funktionieren auch, aber eine offizielle OS API ist nochmal eine andere Liga und muss noch mehr Aspekte berücksichtigen.
Da müsste man nochmal ordentlich darüberbürsten und das Wissen von mehreren Entwicklern miteinbeziehen. Ich bin mittlerweile auch nicht mehr der gleiche wie vor zehn Jahren, als ich damit angefangen habe. Vieles würde ich nun anders machen.


--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

27.05.2010, 20:54 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

@Thore:

1. Richtig. Als Entwickler muss man sich darauf verlassen können, dass die API gepflegt wird, zumindest solange es das OS selbst gibt.
Und nicht übermorgen in halbfertig wieder stirbt. Die API muss von einem Großteil der Entwickler benutzt werden, um Bugs auszumerzen und Know-How zu generieren, auf das man zugreifen kann (Foren, Faq, Doku, Tutorials etc.).
Ein einzelner Hobby Entwickler kann das nicht garantieren. Das ist zur Hälfte ein psychologisches Problem, zur anderen Hälfte ein Menpower Problem.

2. Richtig. Sonst verpufft der Effekt und alles ist für die Katz.
Würde es so eine API für OS4 geben, wäre das aber auch so erdrückend dass es schnell einen Port für OS3, MOS und AROS geben würde. Den Source veröffentlichen würde das natürlich enorm beschleunigen, vor allem wenn das in der selben Codebase von allen entwickelt würde.
AHI ist hier ein leuchtendes Beispiel. AHI ist konzeptionell nicht sehr gelungen, aber es gab keine Alternative und bereits genug Programme die das nutzen, so musste ein Port für alle Plattformen her, und wird ja mittlerweile als Bestandteil des OS empfunden. Ebenso wie Picasso96/CGX.
Stellt euch vor, jedes OS hätte eine eigenes AHI und RTG System. Das wäre katastrophal.

3. Ich würde das nicht in die bestehenden Libs integrieren, da sie eine Schicht darüber liegen, so wie beispielsweise die datatypes.library.

4. Natürlich, Doku muss sein.


--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

26.05.2010, 18:03 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

BMP V3 ist das super dämliche Grafikformat, was unter Windows, zumindest früher, überall benutzt wurde.
Das wurde erweitert um V4 und V5, um z.B. einen AlphaChannel mitspeichern zu können. Obwohl die Erweiterungen von Microsoft stammen, kann übrigends mit V5 fast kein Microsoft Program umgehen, ausser glaube ich dem IE.

Zitat:
Original von cha05e90:
@Der_Wanderer:
Hmm - kann ich explizit den Alpha-Kanal eines PNG "auslesen"? Bzw. einen Alphakanal zufügen/manipulieren?

Also grundsätzlich kann man mit einem Bild natürlich alles machen, sobald es mal im Speicher ist, völlig egal ob das nun einmal ein PNG, JEPG oder ILBM war. Das Dateiformat ist ja nur die Darstellung des Bildes im abgespeicherten Zustand, nicht im RAM.
Es gibt Funktionen um den AlphaChannel wegzuwerfen, oder ein zweites Bild als AlphaChannel hinzuzufügen. Oder auch eine RGB Farbe mit Toleranzwert zu setzen. Letztendlich kann man auch auf die RAW Daten direkt zugreifen, somit ist alles möglich.

Es gibt natürlich auch eine Befehl eine Schicht unter der "image" inlcude, wo man z.b. ein PNG Datei öffnen kann und sich nur den AlphaChannel rausholt, ohne das eigentliche Bild zu decodieren. Das ist dann aber schon "fortgeschrittene Programmierer", also man muss sich z.b. selbst einen Speicherbereich allocieren und der dann befüllt wird mit dem AlphaChannel.



--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

26.05.2010, 10:59 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

> 2. Welche Möglichkeit soll ich zum konvertieren von Bildformaten/Größen etc. verwenden ?
D.h. du willst Bilder konvertieren so wie mit dem ImageConverter?

Der im Prinzip macht einfach:
code:
image_Load{0,"myimage.png"}

; tue etwas mit dem Bild, z.B.
image_Resize{0,800,600}
; oder mit Filter bearbeiten:
image_Filter{0,#image_filter_gamma,300}

image_Save{0,"myimage.jpg",@"JPEG"}


Unterstützt werden zum Laden
- alle Datatypes
- Icons (mit korrekter Transparenz)
- PNG mit AlphaChannel
- IFF-ILBM mit ALPH Chunk (z.B. Arteffects)
- hauseigenes AB3I Format

Zum Speichern (alle nur 24bit Farbtiefe, optional mit AlphaChannel):
- IFF-ILBM mit ALPH
- JPEG
- PNG
- AB3I
- BMP V3,V5


--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

25.05.2010, 19:40 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

> Wie ich schon öfters sagte. Nicht lange fackeln, handeln.
Eben nicht. Das ist ja genau das, was ich versucht habe zu veranschaulichen. Liest (und kognitiv verarbeitet) jemand (ausser Holger) mein Geschriebenes überhaupt?
Jeder für sich alleine kann nicht viel erreichen. Jede Lib oder Linkerlib wäre nur ein kleiner Baustein dessen was benötigt wird. Wenn die Bausteine nicht wie Lego aufeinander passen, wird ein Programm zur Flickschusterei mit viel fehleranfälligem Glue-Code und es gibt keine wiederkehrenden Mechanismen, die einem die Einarbeitung so sehr erleichtern.
Ausserdem ist es sehr gefährlich, wenn man 3rd Party Software (zumindest auf Binary Basis) einbindet, das ist wie ungeschützer Sex.
Die meisten Libs machen auf irgendeiner Plattform Zicken, alleine wegen dem wenigen Testen bei so vielen verschiedenen Libs.

Also der Weg zum Glück liegt selten auf dem gierigen Pfad.


--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

24.05.2010, 21:35 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

> wzdata: IncBin "zinzeszins.wizard"
Die Zeile bedeutet nicht, dass in einem Assign "wzdata:" gesucht wird.

wzdata: ist ein Label (Referenz auf eine Speicheradresse in der Exectuable), was später benötigt wird um Wizard zu sagen wo die Daten im Speicher liegen. Der Befehl IncBin hat hier keine Pfadangaben, deshalb wird u.A. im aktuellen Verzeichnis gesucht, was normalerweise der Pfad des Source codes ist.

Wenn du Amiblitz3 von Sourceforge runtergeladen hast, solltest du noch die Executable flags setzen für "Amiblitz_beta", "System/PED_beta" und "Debug/REDDebugger".

Ich weis ich weis, ich muss unbedingt mal ein ordentliches Release machen.

Vielleicht ist dir dieser Reference Guide hilfreich, den ich gerade schreibe. Wenn du schon programmieren kannst, brauchst du eigentlich nicht viel mehr.

http://hd-rec.de/AmiBlitz3/main.html

Ist aber noch nicht ganz fertig und an einigen (wenigen) Stellen noch falsch, weil es durch Copy&Paste aus meiner A/A++ Docu entstanden ist.

--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

23.05.2010, 22:01 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

@whose:

> Ihr redet um den heißen Brei herum.
Nein, wir sprechen ganz genau den heißen Brei an.

> Weder Java noch Windows hatten "von Geburt" an die "API",
Das ist schon richtig, nur sind mittlerweile 20 oder mehr Jahre vergangen, und es gibt nun besseres. Ich entwickle momentan für Android, das ist so ziemlich die neueste API die es gibt an OS. Mag sein, dass ein "echter hardcore Programmierer" da die Nase rümpft, aber mit ein paar Klicks hat man eine funktionierende App gebastelt, sie sich systemkonform verhält. Sound abspielen? Bitteschön, Sound laden, Sound spielen, sind zwei intuitiv nachvollziehbare Methoden die man aufrufen muss, aufnehmen oder streamen genauso. Wenn ich daran denke was man bei AHI alles schlimmes tun muss, bis das funktioniert. Und AHI gehört ja noch zu den neueren APIs.

> Oder macht die von Euch so dringend benötigten Toolkits selbst.
Das habe ich ja alles schon gemacht. Hat tausende Stunden meiner Freizeit gekostet, in denen ich keine produktive App erstellt habe. Das ist ja genau der Kritikpunkt. Wenn du das einer Firma sagen würdest, die wirtschaftlich sein muss, dann würden sie diese Plattform nicht mal mit der Kneifzange anfassen.

Das Problem warum niemand diese Libraries oder Toolkits nutzt ist, dass keines wirklich umfassend und offiziell vom OS ist. Was ich sagen will sind zwei Dinge:

1. Wenn man sich abhängig macht von 3rd Party Software, dann muss man überzeugt sein, dass sie alles kann was man braucht, und sie sollte noch "am leben" sein falls unüberwindbare Bugs auftauchen. Das ist selten der Fall weil das meiste Hobby Sachen sind die nur die Bedürfnisse des Authors berücksichtigen. Und kaum ein OS ist so voll von "Individualisten" wie der Amiga.

2. Die APIs sind nicht koordiniert und unterstützen sich nicht gegenseitig. Es gibt z.B. IBrowse oder AWeb, aber sie stellen kein HTML View Widget für AmigaOS zur Verfügung. Also jeder bäckt seine eigenen Brötchen, die untereinander nicht zusammenpassen. Das verhindert jede Menge hochqualitative Entwicklungen, wie z.b. HTML Emails lesen, Online Hilfen mit schönem Layout und Bilder (AmigaGuide? Eeek!), besser noch gleich via Internet, so ist die Doku immer auf dem aktuellen Stand. Z.b. dem Android SDK liegt gar keine Doku direkt bei. Wenn man was anklickt kommt ein HTML View der sich die Doku als Website lädt.

Also wenn ich jetzt so eine API machen würde (vorausgesetzt ich hätte den Batzen Zeit, der dafür nötig wäre), dann würde das wohl kaum jemand nutzen weil das nicht offiziell ist und alle skeptisch wären und mir nicht zutrauen. Und mit Recht, denn ich bin ja nur ein Hobby Bastler mit ein bisschen Freizeit, so was "tolles" wie die Android API, an der zig Entwickler Vollzeit dran sitzen kann man da nicht leisten.

Es würde also Kooperation von Entwicklern und offizielle Integration ins AmigaOS vorraussetzen, um erfolgreich zu sein. Und das platform-übergreifend für OS3.x (oder OS4 für 68k), OS4 für PPC, MOS und AROS, weil das nunmal die jetzige Realität ist. Solange das nicht passiert, verpufft die meiste Entwickler Power und es entsteht kaum Mehrwert.

Nachtrag:
> In den meisten Fällen dürfte auf Euch die eine oder andere nicht so positive Überraschung warten, was z.B. Performance angeht...
HighLevel = langsamer als LowLevel ist heutzutage nicht mehr unbedingt zutreffend. Das war früher mal so, wo jeder CPU Cycle teuer war. Oftmals ist es gerade umgekehrt, dass durch weniger Wissen/Erfahrung die Low Level Library ineffizienter angewendet wird um das gleiche zu erreichen was der Higg-Level Call machen würde, vom Experten geschrieben. Wenn die High Level API gut designed ist, dann ist das in 90% der fälle sowieso genau das, was man sich durch Low-Level aufrufe zuammensuchen müsste.

Beispiel Grafikprogrammierung:
Früher hat man den Blitter direkt angesprochen, der Overhead via Treiber wäre sehr deutlich geworden.
Heute sind die Grakas vielfältiger und komplexer, keiner programmiert das mehr direkt. Er würde auch vermutlich was schlechteres produzieren als der Treiber vom Hersteller, weil die eben genau wissen wie man das am besten machen sollte.

--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ Dieser Beitrag wurde von Der_Wanderer am 23.05.2010 um 22:19 Uhr geändert. ]
 
Der_Wanderer   Nutzer

21.05.2010, 13:43 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

Eckige Klammern, kein HTML. BB-Code.

Also so:

[ code ]

[ / code ]

nur ohne die Leerzeichen. Ist ist in fast allen Foren so.

--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

21.05.2010, 09:08 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

@Bernd

du solltest das "code" Tag benutzen um deinen geposteten Code herum, mit Eckigen Klammern.

Dann bekommst du sowas hier:

code:
; WB App Template (Thilo Koehler 2007)

; control the compiler ...
; 1 : integer optimizer, exe will need 68020+ CPU
; 2 : floating point usage, exe will need 68881+ FPU
; 4 : allow AB3 compiler extentions
optimize 7 ; = 1|2|4 (we want it all!)
 
; do some more strict syntax (e.g. declare variables),
; which is very useful for larger projects
Syntax 2

; we need to include the WBStartup Code
WBStartup

; use the WB screen as screen object 0
WbToScreen 0

; give our WB App a version string
!version {"MyWBApp 1.0 (\\__DATE_GER__)"}

WindowFlags.l = #WFLG_CLOSEGADGET|#WFLG_DRAGBAR|#WFLG_DEPTHGADGET|#WFLG_ACTIVATE|#WFLG_SIZEGADGET
Window 0,10,10,320,200,WindowFlags,"MyWBApp",1,0

quitme.l = False
While quitme = False ; message loop, runs until we set quitme=True
  idcmp.l = WaitEvent  ; put the app to sleep until we receive an event
  Select idcmp  ; check what kind of event happend (#IDCMP_...)
    Case #IDCMP_CLOSEWINDOW  ; someone hit the close gadget
      quitme = True

    Case #IDCMP_MOUSEBUTTONS
      ; ... check mouse buttons

    Case #IDCMP_GADGETUP
      ; ... check Gadgets

    Case #IDCMP_MENUPICK
      ; ... check Menu Picks

    ; Case #IDCMP_... ; see Definition Browser for more event types

    Default
      ; we are not interested in this event, so we do nothing

  End Select
Wend

End ; never forget "End", it closes the window for us and frees all resources

--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

20.05.2010, 15:59 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

Ich meinte kein Hello World, sondern ein Template. Ist ähnlich, aber hat nicht das gleiche Ziel.
Kann man die .wizard Dateien eigentlich Manuell erzeugen, oder wird dafür zwingen StormWizard benötigt?
Das würde das Template natürlich einfacher/einsichtiger machen.

--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

19.05.2010, 17:44 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

> Richtig, wenn ich Meister werden will, dann sollte ich von Anfang an C lernen...
Wieso C wenn man "Meister" werden will? Meister in was? Meister in C ja. Meister in AmigaOS API? Nein.

Ein gängiger Irrtum ist, dass Amiblitz3 ein Basic Dialekt ist und dass alles was man machen will und in Zukunft machen wollen wird (MUI, AHI, StormWizzard, Internet) auf magische Weise auf irgendeine High-Level Runtime abgebildet ist, die aussieht wie Basic.

Wenn du StormWizzard programmierst, sieht das fast genauso aus wie der C Code, nur ein einigen Stellen einfacher weil Amiblitz Strings unterstützt und man kein Makefile und anderes Tamtam braucht.

Für Windows und Screens gibt es High-Level Funktionen, also sowas wie

Window 0,x,y,width,height,"<title>"

Aber wenn ich jetzt API X benutze (z.b. bsdsocket, openGL), dann sieht das logischerweise unter jeder Sprache gleich aus, es sei denn jemand hat das in High-Level Funktionen gepackt.
Natürlich kann man auch Fenster öffnen direkt mit AmigaOS API, also der edukative Aspekt kann auch bedient werden, wenn man will. Muss man aber eben nicht, was es dem Anfänger deutlich leichter macht.

Die GUIs auf deiner HP sehen doch gut aus, ich denke mal Reaction. Was ist daran schlecht, warum nutzt du nicht dein vorhandenes Framework mit dem du schon Erfahrung zu haben scheinst?

--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de



[ Dieser Beitrag wurde von Der_Wanderer am 19.05.2010 um 17:46 Uhr geändert. ]

[ Dieser Beitrag wurde von Der_Wanderer am 19.05.2010 um 17:57 Uhr geändert. ]
 
Der_Wanderer   Nutzer

19.05.2010, 15:45 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

@Honitos

Evtl. hast du Lust ein Template zu schreiben?
Das sollten dann so in ein bis zwei Bildschirmseiten das Skelett aufbauen.
--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

19.05.2010, 11:19 Uhr

[ - Direktlink - ]
Thema: Stormwizard GUI Editor mit BlitzBasic oder lieber C (Anfänger) !??
Brett: Programmierung

1. Ja.

2. Geschmackssache. Bei dem CV eher Amiblitz, das das "drumherum" viel einfacher ist. Evtl. könnte man das auch zum Anlass nehmen, ein StormWizard Template zu machen, da hat man dann quasi ein GUI Skelett mit einem Klick und kann das ausbauen.

3. Anlaufstelle ist http://www.amiforce.de (Amiblitz HP, Downloads, Docu, Forum). Viel Docu ist aber schon in das IDE integriert. Wenn man also die generelle Syntax kennt, braucht man keine externe Docu mehr.
--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

18.05.2010, 18:50 Uhr

[ - Direktlink - ]
Thema: int test = 'TEST';
Brett: Programmierung

Ziffern als Macros zu machen ist schwachsinn, denn z.b. das ASCII Zeichen "1" bezeichnet diese Ziffer bereits perfekt, kann man bereits als #define 1 1 sehen, wenn man das so will.
Ein #define mit namen macht erst Sinn, wenn es nicht um die Zahl geht, sondern wenn es eine Logische Bedeutung hat, wie z.B. MAX_DEVICE_IDS oder sowas.
Aber hier in dem Fall ist mit 'ILBM' tatsächlich, wie bei der 1, genau dieser Wert gemeint, und kein anderer. (und auf keinen Fall ein anderer!!! das wäre fatal).

Wegen der BO, das darf man natürlich nicht aus der Datei als char Array lesen, wenn man das später als Integer haben will. Aber das ist eine andere Geschichte. In dem Fall ist ILBM einfach die 32 Bit Zahl die sich daraus ergibt.

--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

18.05.2010, 18:42 Uhr

[ - Direktlink - ]
Thema: int test = 'TEST';
Brett: Programmierung

@geit
Solche grundlegenden Programmiertechniken sind mir schon klar ;-)

Bei einer lade Routine spricht aber eigentlich nichts (nicht viel) dagegen, mal eben sowas wie


if (chunkId == 'ILBM') ...

zu machen. Das ist genauso gut lesebar wie

#define ID_ILBM <blablablabla>

if (chunkId == ID_ILBM) ...

zumal man direkt sieht, dass nach "ILBM" gesucht wird. Hier haben wir den umgekehrten fall, wenn ich mich bei dem Define vertippe, dann muss ich mir den Wolf suchen, weil man bei ID_ILBM davon ausgeht dass es stimmt.

--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

18.05.2010, 17:58 Uhr

[ - Direktlink - ]
Thema: int test = 'TEST';
Brett: Programmierung

@Holger

Es ist auch nicht gefählricher als beispielsweise Hex Zahlen:
int test = 0xDEADBEEF

Über die BO muss man sich im klaren sein, es ist eben nur eine andere Basis, 256 statt 16 oder 10, 8 oder 2.



--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

18.05.2010, 16:26 Uhr

[ - Direktlink - ]
Thema: int test = 'TEST';
Brett: Programmierung

Nein, normalerweise nutze ich Amiblitz, da ist das ganz einfach.

Wie in meinem Titel

int test = 'TEST';

wäre ja nur konsequent gewesen. Oder statt

int test = 0xDEADBEEF
int test = 0aTEST

(a wie "ASCII").

Das mit den #defines ist schon eine Möglichkeit, miein Compiler frisst das auch als Konstante. Aber ist extra Aufwand. Kürzer geht's wohl nicht in C.


--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

17.05.2010, 11:29 Uhr

[ - Direktlink - ]
Thema: int test = 'TEST';
Brett: Programmierung

Gut, es ist kein direktes Amiga Programm, daher kann ich iffparse nicht einbinden, aber ich könnte das Macro "ausborgen". Obowhl ich eben die vielen Hochkommas vermeiden wollte, da bricht man sich beim tippen fast die Finger.

Bisher nutze ich das hier (für Big Endian):

code:
#define TagID(A) ((((int32)A[0])<<24)&0xFF000000) | ((((int32)A[1])<<16)&0x00FF0000) | ((((int32)A[2])<<8)&0x0000FF00) | ((((int32)A[3]))&0x000000FF)

switch(Id) {
  case TagID("TEST"): ...


aber das funktioniert nicht, da der Compiler es nicht schafft, daraus eine Konstante vorzuberechnen, damit ich das in einem switch/case nutzen kann.
Mal sehen ob das mit dem Macro aus iffparse geht.



--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ Dieser Beitrag wurde von Der_Wanderer am 17.05.2010 um 11:32 Uhr geändert. ]
 
Der_Wanderer   Nutzer

16.05.2010, 22:27 Uhr

[ - Direktlink - ]
Thema: int test = 'TEST';
Brett: Programmierung

Hallo an alle C-Experten!

Ein Feature vermisse ich in C/C++ schmerzlich, oder ich weis einfach nicht wie es geht.

Wir alle kennen:

char x = 'A';

somit hätte x den Wert 65. Kann ich das auch mit 4 Bytes machen?
Das würde eine Menge Hickhack und ersparen.

Z.b. beim Lesen oder Schreiben von Dateien.

In Amiblitz mache ich z.B.

code:
file_WriteLong(fid,@"FORM");

oder

chunkId.l = file_ReadLong(fid);
Select chunkId
  Case @"ILBM" : ...
  Case @"CMAP" : ...
End Select


Ich möchte also eine 32 bit Konstante nicht decimal, nicht hexadecimal und auch nicht octal definieren, sondern auf 256 basis, also per ASCII Zeichen.




--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de

 
Der_Wanderer   Nutzer

09.05.2010, 20:32 Uhr

[ - Direktlink - ]
Thema: C oder C++?
Brett: Programmierung

Also hier werden ein paar Dinge durcheinander geworfen.

1. Ich habe nicht vor, eine kommerzielle Software für den Amiga zu machen. Kommerziell und Amiga sind momentan zwei Widersprüche, da zu wenige potentielle Kunden. Hollywood und OS4 sind auch nur Hobby Projekte, für die eine Aufwandsentschädigung verlangt wird. Leben kann davon niemand.

2. Kommerzielle Entwickler haben mehr Zeit für die Entwicklung, und sind auf jeden Fall auch dafür ausgebildet. Da wäre eine alte/schlechte/low-level/schwache API noch eher verkraftbar als im Hobby Bereich, zumindest wenn es darum geht echte, nutzbare und stabile Software zu bauen.
(Experimente oder System Hacks sind natürlich wieder was anderes)

3. So eine High-Level API wie ich vorgeschlagen habe bringt für Portierungen nicht viel, weil die zu portierenden Programme diese API ja gar nicht nutzen. Im Gegenteil, wenn man eine fremde API nachbilden muss (beim Portieren), dann kommt einem eine Low-Level API eher entgegen. Zum Portieren, zumindest von der Linux Welt (wo ja viele der Open-Source Programme herkommen), wäre Posix wichtig, wenn auch nicht ausreichend. Posix ist low-level, und kümmert sich hauptsächlich um Dinge wie wir sie in der dos und exec.library finden, aber keine GUI Toolkits oder Multimedia Bibliotheken etc.
Aber Portieren kann nicht das vorrangige Ziel einer Plattform sein, denn damit kann man höchstens zweit-Bester sein, egal welche Kathegorie. Portieren macht nur Sinn um Löcher zu stopfen, die man selbst nicht besetzen will oder kann. Was benötigt wird sind "Only-Amiga-makes-it-possbile"-Apps. Z.b. werfe ich AmigaOS an, um ArtEffekt, HD-Rec, Amiblitz oder TuiTED zu nutzen, nicht um zu surfen oder Videos zu gucken. Das ist natürlich schön zu haben, aber nicht das Argument um AmigaOS zu installieren.

Die High-Level API wäre genau dafür, Entwicklungen auf dem Amiga, für den Amiga zu mahcen. Man könnte natürlich hergehen, und diese API für Win oder Linux portieren. Der Sinn wäre dann der Export von Amiga Apps, nicht der Import, das sind zwei ganz verschiedene Paar Schuhe.

Der Amiga ist was das Entwickeln angeht momentan ganz weit abgeschlagen, man entwickelt noch genauso wie vor 20 Jahren, evtl. ist das IDE besser geworden und die Auflösung, so dass mehr Text auf dem Screen passt. Die API, die man programmieren muss ist aber noch genauso, obwohl die Anforderungen anders sind und die Ansprüche/Erwartungshaltung beim User stark gestiegen.
Und nein, unter Windows (wenn man das denn als Vorbild überhaupt in betracht zieht) programmiert man nicht unbedingt die nackte Win32 API. Es gibt reichlich Auswahl an GUI Toolkits, Multimedia APIs etc.

Und ich denke das ist die mit Abstand lebenswichtigste und empfindlichste Stelle. Viel wichtiger als Ports von Browsern, SDL Games oder Blender. Die gibt es auch alle auf dem PC und "in besser", und sind z.B. auf einem WinUAE System eh nicht nötig.
WinUAE ist für mich momentan die einzige Alternative für AmigaOS, da ich nebenher Windows und Linux brauche und auf einen Laptop angewiesen bin (und mein Lieblings-IDE 68K Code erzeugt).

--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ Dieser Beitrag wurde von Der_Wanderer am 09.05.2010 um 21:41 Uhr geändert. ]
 
 
Erste << 6 7 8 9 10 -11- 12 13 14 15 16 >> Letzte Ergebnisse der Suche: 1229 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-2022 by amiga-news.de - alle Rechte vorbehalten.
.