ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Suche | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
|
||||||
Der_Wanderer
Nutzer
25.09.2008, 23:43 Uhr [ - Direktlink - ] |
Thema: AmiBlitz will nicht, welche alternative ist die Beste ?
Brett: Programmierung Deine Aussgaen sind total widersprüchlich. Erst schreibst du > Und die onlinehilfe, naja, zumindest besser als das risige guide, wo man die kommandos nach kategorien suchen muss, und danach beklagst du dich, dass es keinen Index gibt. Lass dir gesagt sein: Es gibt beides. Wenn du den Instruction-Browser aufrufst, und z.B. "Library" eingibst, dann bekommst du alle Befehle und Include-Functionen in denen was mit "Library" vorkommt, also auch OpenLibrary_(). Du kannst also gezielt nach Befehlen suchen, wo du eine Idee hast wie sie heissen könnten oder es vielleicht schon weisst. Per doppelklick springst du dann in den "riessigen" Guide, aber genau dahin wo du willst. Wenn du dort auf "Index" gehst, dann siehst du alle Befehle in derselben Bibliothek, die also verwandt sind. Optional kannst du auch über "Help" im Menu in den riessigen Guide springen, und dich durchhangeln. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
25.09.2008, 23:38 Uhr [ - Direktlink - ] |
Thema: AmiBlitz will nicht, welche alternative ist die Beste ?
Brett: Programmierung Ähem. Du hast da einiges missverstanden bzw. im Handbuch die Grundlagen nicht gelesen. Also grundsätzlich gilt: möchtest du einen Rückgabe Wert haben, stehen die Parameter in Klammern. Möchtest du keinen haben, stehen die Parameter ohne Klammer da. Das kommt noch von BlitzBasic Zeiten. Also wäre richtig: *mylib.Library = OpenLibrary_("mylib.library",7) und If OpenDevice_ ("timer.device",#UNIT_MICROHZ,msg,0) = False ... aber OpenDevice_ "timer.device",#UNIT_MICROHZ,msg,0 wobei letzeres kein guter Stil ist, da man den Rückgabewert checken sollte. Die Befehle mit "_" am Ende kommen von Libraires die auf BlitzBasic-Weg eingebunden wurden. Das es kein Beispiel gibt, wie man eine Library öffnet, liegt daran dass Basic Progger selten Libraries öffnen. Das übernimmt normalerweise Basic. Wenn du aber dennoch den OS Aufruf OpenLibrary benutzen willst, dann musst du im RKM nachgucken wie das geht. Dort kommt du netterweise per SHIFT+HELP über OpenLibrary direkt hin oder durch Doppelklick im Instruction Browser. Wie das in Amiblitz syntaktisch umgesetzt wird ist Grundlage. Man kann ja nicht für jede OS Funktion ein Beispiel coden. Als Nachschlagewerk dient da das RKM, was in der Amiblitz3 Online Hilfe (Syntax+Autodocs) integriert ist. Wenn du meinen Rat angenommen hättest und FD2Include benutzt hättest, hättest du auch sofort gesehen wie man eine Library in Amiblitz3 einbindet ohne eine Blitzlib daraus zu generieren (also das, was du scheinbar vor hast). Aber du wolltest es ja selbst machen. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 26.09.2008 um 00:10 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
25.09.2008, 20:09 Uhr [ - Direktlink - ] |
Thema: AmiBlitz will nicht, welche alternative ist die Beste ?
Brett: Programmierung Yo, steht ja alles im Bugtracker. Der Startup dauert deshalb länger u.a., weil die Online Hilfe für Includes drin ist und beim Start eingelesen wird. Da könnte man etwas beim Parsen der Textdatei optimieren. Unter WinUAE dauert das aber nicht wirklich lange. Es ist halt nur nicht mehr ganz "sofort". -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
25.09.2008, 17:26 Uhr [ - Direktlink - ] |
Thema: AmiBlitz will nicht, welche alternative ist die Beste ?
Brett: Programmierung Die Zeile würde korrekt lauten: code:*MyIntuitionBase.IntuitionBase = IntuitionBase; "IntuitionBase" ist leider schon eine Funktion, ; die den Pointer zur IntuitionBase zurückgibt ; deshalb können wir die Variable nicht so nennen *nextscreen.Screen = *MyIntuitionBaseFirstScreen Einen "." NACH einer Variablen gibt den Type an. Ein "*" VOR der Variablen definiert eine Pointer Variable. Anders als in C, wird der * immer mitgeführt. (ausser innerhalb von Newtypes). Der Unterschied zwischen Print und NPrint ist, dass "N" ein Newline ans Ende setzt. Also: NPrint "Hallo Welt!" macht das gleiche wie Print "Hallo Welt!"+chr$(10) oder Print "Hallo Welt!n" Unter WinUAE ist die Bild-Nach-Unten Taste die HELP-Taste. Keiner verlangt von dir, dass du an AB3 mitentwickeln sollst. Lediglich eine Fehlerbeschreibung wäre sehr hilfreich. Das mit dem doppelten // ist doch schonmal ein Anfang ;-) Werde das gleichmal in den Bugtracker eintragen. Zum schnellen Workaround kannst du ja mal im ASL Requester das "/" am Ende des Pfades weglassen, wahrscheinlich geht's dann. Unter OS3.x wird der eigentlich immer entfernt. Deshalb ist mir das noch nie aufgefallen. Ich halte dich aber für intelligent genug, dass du da schon selbst drauf gekommen bist. Sollte also keine Hürde für dich darstellen. Dass AB3 nach einer Weile freezed und/oder keine Executables erstellt ist komisch. Wie schon erwähnt, hast du irgendwelche Patches laufen, oder nutzt du gar "AmiSys" ? Gerade wenn du keine Zeit hast, solltest du Amiblitz ans Laufen bringen, da die Entwicklung viel schneller geht als in anderen Sprachen. Wie schon gesagt, probiere AmiKit oder eine nackte OS3.9 Installation. Dort wird es laufen. Mit WinUAE ist das ja kein Problem. Amiblitz3 ist unabhängig von alten Blitzbasic installtionen. einfach entpacken, irgendwo hinlegen und starten, das sollte reichen. Evtl. noch die Libs abgleichen. Du solltest auch amiblitz gleich auf einen eigene Screen umlenken in den Prefs, am besten WB Clone. In dem nächsten Release werden wir das am besten per default so machen. Auf der WB gibt es in der Tat noch kleinere Glitches mit den Farben. P.S.: Grundlegendes findest du im Benutzerhandbuch: http://www.amiforce.de/amiblitz/benutzerhandbuch/index.php Es macht keinen Sinn für sowas hunderte von mini-Beispiel Sourcen zu erstellen, die letztendlich nix machen sondern nur zum Lesen da sind. Dafür gibt's das Handbuch. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 25.09.2008 um 17:45 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
25.09.2008, 09:38 Uhr [ - Direktlink - ] |
Thema: Rekrusives durchsuchen von Verzeichnissen
Brett: Programmierung So mache ich das in Amiblitz3, und das funktioniert: code:Function.l scan {path.s} DEFTYPE.FileInfoBlock fib lock.l = Lock_(&path.s,#ACCESS_READ) If lock If Examine_ (lock,&fib) While ExNext_(lock,&fib) filename.s = path.s+"/"+Peek.s(&fibfib_FileName) If fibfib_DirEntryType<0 ; Datei! Else ; Verzeichnis! scan{filename.s} End If Wend End If UnLock_ lock End If End Function scan{"DH0:ScanFromHere"} P.S. das konkatenieren des Pfades mit dem Dateinamen habe ich mal mit "+" geschrieben, um keine unnötigen Amiblitz Befehle mit reinzubringen. Eigentlich sollte man AddPart aus der dos.library benutzen. Um zukunftssicher zu ein, kannst du den DEFTPYE.FileInfoBlock mit code:*fib.FileInfoBlock = AllocDosObject_ (#DOS_FIB,#TAG_DONE) ... FreeDosObject_ #DOS_FIB,*fib ersetzen. Die Dateigröße steht in fibfib_Size. BTW, wie ist das bei Dateien >=4GB gelöst (vorrausgesetzt, das Filesystem unterstützt das)? -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 25.09.2008 um 09:40 Uhr geändert. ] [ Dieser Beitrag wurde von Der_Wanderer am 25.09.2008 um 09:43 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
25.09.2008, 09:24 Uhr [ - Direktlink - ] |
Thema: AmiBlitz will nicht, welche alternative ist die Beste ?
Brett: Programmierung Yep, reden wir hier tatsächlich über das hier: http://amiblitz3.amiforce.de/index.php?action=3 Macht kein Sinn drüber zu diskutieren wenn du eine alte Version auf OS4 probierst, die dafür noch nicht angepasst war. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
24.09.2008, 23:50 Uhr [ - Direktlink - ] |
Thema: AmiBlitz will nicht, welche alternative ist die Beste ?
Brett: Programmierung > ich wollte keineswegs AB schlecht machen, das war nicht meine Absicht, falls das so rübergekomme ist. Hm ja, es kommt so rüber. > und eben das es bei mir auf 3 Systemen (Arbeits-OS4, Standard-OS4, > Winuae auf Windows-Laptop) nicht funktoniert bzw. unerklärliche > fehler hat, und somit für mich ausscheidet. Hm, und du hast keinerlei Willen nach dem Fehler zu suchen? Das geht sicher schneller als dein Prog in ASM zu coden. Ausserdem vermute ich, dass an deinem Systemen irgendwo was nicht stimmt. Das würde dann deinem System zugute kommen, den Fehler zu finden. > Es nützt nun auch nichts, da die fehler zu suchen, da die trefferquote 3/3 Gerade da wäre es doch sehr nützlich, den Fehler zu finden! > 3 von 3 geht nicht einfach zu hoch ist, um sowas für betatests rauszugeben. ??? hm, also erstmal müssen wir zwischen der Stabilität der IDE und der damit erzeugten Executables unterscheiden. Die Qualität der erzeugten Exe kannst du ja nicht beurteilen, weil du scheinbar erst gar keine erstellen kannst. Du kannst aber in meiner Signatur sehen, was man damit coden kann und kannst dir die Progs angucken. Da das IDE bei dir auf allen 3 Systemen nicht läuft, sollte dir das zu denken geben. Hast du irgendwelche Patches installiert? HAst du die Libs aus dem Libs Verzeichnis übernommen? Gerade bei OS4 sind einige Schnell-Schüsse von Library Portierungen im Netz zu finden, die nicht funzen. Nimm lieber die 68K Varianten. > Und so fehler, das nicht mal der eben gespeicherte Sourcecode > wieder eingelesen werden kann, auf 2 wirklich total > unterscheidlichen systemen, sowohl Hard- als auch Softwaremässig, Du musst das genauer beschreiben. Was bedeutet "der Sorucecode kann nicht eingelesen werden"? Kommt eine Fehlermeldung? Friert die Kiste ein? Nur bei Sourcen die du gespeichert hast oder auch bei den Demos? > Nichts desto trotz finde ich die Arbeit, die hinter AB3 steckt > wirklich impostant, ich denke nur manchma, und das sehe ich auch an > allen Beispielsourcen, das immer viel wert auf "komplexe sachen > einfach handeln" aber überhaupt nicht auf die basics, also einfache > Sachen gelegt wird. Was meinst du mit Basics? Datei öffnen? code:Das wäre der Include weg. Jede Include hat ein integriertes Demo, wenn man sie direkt kompiliert.fid.l = file_Open{"DH0:MyFile.dat",#file_read} If fid>=0 file_WriteLine{fid,"In die Datei will ich einen Text speichern!"} file_WriteMem{fid,memptr.l,lenght.l} ; binäre Daten Speichern file_Close{fid} End If Es gibt auch ziemliche Low-Level Includes, z.B. prefixtree.include oder so. Wenn wir noch weiter runter gehen sind wir bei + und -, aber dafür muss man ja nicht extra ein Demo schreiben, oder? > Also von Amiblitz muss ich nun weg, hilft ja alles nichts. Doch. Es würde helfen, wenn du einen richtigen Bugreport ablieferst, dann wird dir sicher schnell geholfen. Aber mehr als "es geht ned!" muss es schon sein, wir können ja nicht auf deinen Bildschirm gucken. > Ich glaube, ich werde doch wieder alles in ASM schreiben müssen, > das hält mich zwar leider länger an stellen auf, die ich eigentlich > vermeiden wollte, da es aber einfach keine vernünftige Alternative > zu geben scheint, werde ich mir da schon was zusammenbasteln. Sorry, das ist eine ziemlich dämliche Lösung des Problems. Dein Problem ist vermutlich mit dem Kopieren einer Library oder dem deaktivieren eines Patches behoben. Auf einem cleanen System läuft Amiblitz3 definitiv. Zur Not installiere dir Amikit oder ein nacktes OS3.9+Picasso+AHI, da läuft es auf jeden Fall. So kommst du viel schneller zum Ziel als mit ASM bit-popeln. Auf http://www.amiforce.de gibts es eine Community die dir bei allen Coding Problemen helfen wird. P.S.: Mehr als dir die Hand reichen kann ich nicht. Zugreifen musst du schon selbst. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 24.09.2008 um 23:57 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
24.09.2008, 12:06 Uhr [ - Direktlink - ] |
Thema: AmiBlitz will nicht, welche alternative ist die Beste ?
Brett: Programmierung > 1. das Programm muss schnell erzeugbar sein und zur verfügung stehen, das schliesst Assembler nicht ganz aus, rückt es aber zumindest in den hintergrund. =>Amiblitz3 code:Im Menu auf "Compiler=>Create Executable"NPrint "Hello World" End fertig. Kein SDK installieren, keine Assigns setzen, keine Parameter Orgie angeben. > 2. Es muss auf jedem Rechner laufen ohne zusätzliche installationen. =>Amiblitz3. Es werden höchstens Libraries benötigt, die stehen aber im Abtract der jeweiligen Inlcude. Bilder können in die Exe integriert werden bei Bedarf. > 3. Es braucht nicht schnell zu sein, da keine zeitkritischen Elemente geprüft werden sollen. Ok, hier Punktet Amiblitz3 (zum Glück) nicht. > 4. Die Ausgabe muss ich meistens als Fensterausgabe und Datei erzeugen können, am besten gleichzeitig. Ist überhaupt kein Problem. Sowohl text als auch Binärdaten können kinderleicht gespeichert werden. 5. Ein zugriff auf externe libraries muss einfach möglich sein, das schliesst (meines Wissnes nach) Arexx aus. Ist auch kein Problem. Da gibt es viele möglichkeiten in Amiblitz, ich bevorzuge das beiliegende Tool "FD2Include" um eine Include zu erzeugen. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 24.09.2008 um 12:11 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
24.09.2008, 11:25 Uhr [ - Direktlink - ] |
Thema: AmiBlitz will nicht, welche alternative ist die Beste ?
Brett: Programmierung Also wenn du was ernsthaftes in "Basic" schreiben willst, was auch auf OS4 und MOS läuft, dann kommst du an Amiblitz3 nicht vorbei. Amiblitz3 ist zwar nicht Standard Basic, bietet dafür viel viel mehr, vor allem spannende Sachen wie Grafik, Sound, Internet etc., die getestet sind auf den verschiedenen Amiga Plattformen, und wenn etwas nicht klappt, kann man es fixen weil es sehr aktiv weiterentwickelt wird. (BTW, es gibt sehr wohl "Input", weil es eine String Funktion ist heisst es "Input$", kann man über die Online Hilfe sekundenschnell herausfinden) Ansonsten bleibt nur noch C, da musst du aber viel von Hand machen was in Amiblitz3 schon da ist. Die Probleme die du hast hat sonst niemand. Ich glaube dir dass es abstürzt, aber schiebe es nicht voreilig auf schlechtes Coding von Amiblitz oder schmeisse gleich die Flinte ins Korn (der größte Fehler den man machen kann wenn man was progammieren will). Ich benutze es fast täglich mehrere Stunden, auch beruflich, und es ist bei mir schon seit Ewigkeiten nicht abgestürzt. Da ist also irgendwas faul bei dir. Es wäre interessant herauszufinden, woran das liegt. Manchmal ist es ja doch ein versteckter Bug, der nur unter bestimmten Umständen zum Tragen kommt. Schau doch auf http://www.amiforce.de vorbei. Das Problem sollte schnell behoben sein. Generell ist das "Amiblitz" Team bemüht, auf die Wünsche von Usern einzugehen und es überall lauffähig zu machen/zu halten. Wenn du dich ein wenig damit beschäftigst, wirst du schnell belohnt mit sehr schnellem Enticklungstempo. Beispiel: (ich weiss, ich weiss...) code:Wo sonst bekommst du eine so einfache und mächtige API geboten?XInclude "ahi.include.bb2" ahi_LoadSound{0,"DH0:Samples/MySound.wav"} ahi_PlaySound{0} ahi_SaveSound{0,"DH0:Samples/MySound.mp3",@"MP3"} End Oder: code:XInclude "image.include.bb2" image_Load{0,"DH0:Pictures/MyFoto.jpg"} image_Resize{0,800,600,1} image_Save{1,"DH0:Pictures/MyFoto_in_800x600.jpg",@"JPEG"} End Alleine dafür benötigst du jahrelange Programmiererfahrung und 100mal so viel Code, wenn du das in C coden würdest. In den meisten Basic Dialekten wäre das unmöglich oder elend langsam. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
19.09.2008, 11:30 Uhr [ - Direktlink - ] |
Thema: iff24 Speichern?
Brett: Programmierung @MaikG Sorry dass ich den Thread etwas benutzt habe, dafür hast du nun Basic Code um "per Hand" zu speichern sowie via Datatype, mit der Einschränkung, dass es auf AfA Systemen vorerst nicht geht. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
18.09.2008, 12:21 Uhr [ - Direktlink - ] |
Thema: iff24 Speichern?
Brett: Programmierung @thomas: Danke für das Beispiel. Im Prinzip mache ich das genauso, das hat mich grübeln lassen... Dann habe ich das Datatpye von AfA entfernt und es geht! D.h. das AROS Datatype kann nicht speichern, zumindest nicht 24bit. Das OS3.9 kann definitiv speichern. Das werde ich mal bei Bernd anmelden. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
17.09.2008, 15:29 Uhr [ - Direktlink - ] |
Thema: iff24 Speichern?
Brett: Programmierung Geht auch ohne PDTA_SourceMode nicht. (wobei das laut Docu notwenig ist, wenn man als Quelle eine non-standard Bitmap angeben will, also das Pendant zu PDTA_DestMode) Die Bitmap wird aber angelegt, daran liegts nicht. Ich kann mich erinnern, dass wir schonmal einen Thread darüber hatten, da gibt es aber auch nicht. Der Code geht jetzt aber auch nicht mit 8bit, vorher hatte ich das mal geschafft dass 8bit ging. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 17.09.2008 um 15:54 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
17.09.2008, 14:09 Uhr [ - Direktlink - ] |
Thema: iff24 Speichern?
Brett: Programmierung @Thomas Auch das hier geht nicht, sollte doch aber, oder? code:... *newbm.BitMap = AllocBitMap_(img_width,img_height,24,@@ #BMF_MINPLANES|#BMF_SPECIALFMT|(#PIXFMT_RGB24 LSL #BMB_PIXFMT_SHIFTUP) ,0) If *newbm=0 Then error{"\__THIS_FUNCTION: Unable to allocate 24bit Bitmap!"} *DTPic._Object = NewDTObjectA_ (0,Tags(#DTA_SourceType ,#DTST_RAM,@@ #PDTA_DestMode ,#PMODE_V43,@@ #PDTA_SourceMode ,#PMODE_V43,@@ #PDTA_BitMap ,*newbm,@@ #DTA_GroupID ,#GID_PICTURE)) If *DTPic GetDTAttrsA_ *DTPic,Tags(#PDTA_BitMapHeader,&*bmhd.BitMapHeader) If *bmhd *bmhdbmh_Width = img_width *bmhdbmh_Height = img_height *bmhdbmh_Depth = 24 End If fh.l = Open_ (&filename.s,#MODE_NEWFILE) If fh DTMWMethodID = #DTM_WRITE DTMWdtw_GInfo = 0 DTMWdtw_FileHandle = fh DTMWdtw_Mode = #DTWM_IFF DTMWdtw_AttrList = 0 succ = DoDTMethodA_(*DTPic,0,0,&DTMW) Close_ fh If succ = False error{"\__THIS_FUNCTION: Unable to write IFF!"} EndIf EndIf DisposeDTObject_ *DTPic succ = DoDTMethodA_(*DTPic,0,0,&DTMW) scheitert wieder, und erzeugt auch keine IFF Datei, sondern eine Datei der Länge 0. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 17.09.2008 um 16:48 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
17.09.2008, 12:24 Uhr [ - Direktlink - ] |
Thema: iff24 Speichern?
Brett: Programmierung Zitat:Die Bitmap ist PIXFMT_ARGB32, die der Name ARGBBitmap_ptr vermuten lässt ;-) Dann wirds wohl daran liegen. Werde es vorher konvertieren. D.h. es geht aber auch kein alpha Channel :-( Zitat:Ok, danke für den Hinweis. so weit war ich nur noch nie... Zitat:Ja, das ist kein Crash. Crashs bekam ich aber früher, evtl. lags aber auch an meinem Code. Sorry, habe da wohl übertrieben.Zitat: Zitat:aha, danke.Zitat: Zitat: Ja, das ist dämlich. Der Vorteil von meinem Code ist, er kann auch ARGB speichern und benötigt lediglich eine Zeile als temporären Buffer. Manchmal geht es einfach nicht, eine Bitmap zweimal im Speicher zu halten, wenn es gosse Bilder sind. Das macht dann auch den VMem Approach vom Zeichenprogramm zunixhte. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 17.09.2008 um 12:25 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
17.09.2008, 11:56 Uhr [ - Direktlink - ] |
Thema: Texteditor mit Zeilenumbruch gesucht
Brett: Amiga, AmigaOS 4 @DaxB Kannst du mal schauen, ob noch MuForce Hits kommen? http://www.hd-rec.de/Archive/TuiTED.lha Vielen Dank! -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
17.09.2008, 10:33 Uhr [ - Direktlink - ] |
Thema: iff24 Speichern?
Brett: Programmierung @thomas Was mache ich falsch? code:Function.l image_SaveDT{image.l,filename.s} SHARED imagedat() DEFTYPE.dtWrite DTMW succ.l=False If ARGBbitmap_ptr *DTPic._Object = NewDTObjectA_ (0,Tags(#DTA_SourceType,#DTST_RAM,@@ #PDTA_DestMode,#PMODE_V43,@@ #DTA_GroupID,#GID_PICTURE,@@ #PDTA_Remap,0,@@ #PDTA_ModeID,0,@@ #PDTA_NumColors,0,@@ #PDTA_BitMap,ARGBbitmap_ptr)) If *DTPic GetDTAttrsA_ *DTPic,Tags(#PDTA_BitMapHeader,&*bmhd.BitMapHeader) If *bmhd *bmhdbmh_Width = img_width *bmhdbmh_Height = img_height *bmhdbmh_Depth = 24 End If fh.l = Open_ (&filename.s,#MODE_NEWFILE) If fh DTMWMethodID = #DTM_WRITE DTMWdtw_GInfo = 0 DTMWdtw_FileHandle = fh DTMWdtw_Mode = #DTWM_IFF DTMWdtw_AttrList = 0 succ = DoDTMethodA_(*DTPic,0,0,&DTMW) Close_ fh If succ = False error{"\__THIS_FUNCTION: Unable to write IFF!"} EndIf EndIf DisposeDTObject_ *DTPic ARGBbitmap_ptr = 0; we must NULL the bitmap Else error{"\__THIS_FUNCTION: Unable to create Datatype Object out of the bitmap!"} EndIf Else error{"\__THIS_FUNCTION: No bitmap!"} End If Function Return succ End Function Als Fehlermeldung bekomme ich "Unable to write IFF!", also DoDTMethodA_(*DTPic,0,0,&DTMW) schlägt fehl. BTW, kann man verhindern dass die Bitmap bei DisposeDTObject freigegeben wird? -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 17.09.2008 um 10:54 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
16.09.2008, 22:47 Uhr [ - Direktlink - ] |
Thema: iff24 Speichern?
Brett: Programmierung Zitat:Yup. Zitat:nope. Das wäre IFF-DEEP, kein normales 24bit IFF. Zitat:Man kann alles lesen bis auf die Tokens, und die verwende ich kaum. Die Includes sind ALLE bei der Distribution dabei, die man hier für Umme kriegt und damit die .bb2 Files sogar richtig lesen kann ;-) http://amiblitz3.amiforce.de Zitat:Datatypes unterstützen "nur" IFF-ILBM zum speichern. Und das auch nur zuverlässig in 8bit oder weniger. 24bit crashed zumindest unter OS3.1, OS3.5 und 3.9. Wenn du aber immer noch nicht AB3 herunterladen willst, habe ich dir den Auszug des relevanten Teils mal rauskopiert: - die Routine kann RGB und ARGB, je nachdem ob bitdepth=24 oder 32 ist - sie geht von einem ARGB PixelArray aus in ARGBptr, es sollte aber ein Leichtes sein das zu ändern falls deine Daten in einem anderen Pixelformat vorliegen - die anderen Variablen sollten intuitiv oder aus dem Kontext sein) code:;Bitplanes bit masks #PF_A1 = $01000000 ;Alpha #PF_A2 = $02000000 #PF_A3 = $04000000 #PF_A4 = $08000000 #PF_A5 = $10000000 #PF_A6 = $20000000 #PF_A7 = $40000000 #PF_A8 = $80000000 #PF_R1 = $00010000 ;Red #PF_R2 = $00020000 #PF_R3 = $00040000 #PF_R4 = $00080000 #PF_R5 = $00100000 #PF_R6 = $00200000 #PF_R7 = $00400000 #PF_R8 = $00800000 #PF_G1 = $00000100 ;Green #PF_G2 = $00000200 #PF_G3 = $00000400 #PF_G4 = $00000800 #PF_G5 = $00001000 #PF_G6 = $00002000 #PF_G7 = $00004000 #PF_G8 = $00008000 #PF_B1 = $00000001 ;Blue #PF_B2 = $00000002 #PF_B3 = $00000004 #PF_B4 = $00000008 #PF_B5 = $00000010 #PF_B6 = $00000020 #PF_B7 = $00000040 #PF_B8 = $00000080 ... ; write BODY chunk file_WriteChunk{dos,@"BODY",-1,False} blen.l = (img_width + 15) / 16 * 2 ; byte length for one bitplane line tmp01.l = tmp + 0 * blen tmp02.l = tmp + 1 * blen tmp03.l = tmp + 2 * blen tmp04.l = tmp + 3 * blen tmp05.l = tmp + 4 * blen tmp06.l = tmp + 5 * blen tmp07.l = tmp + 6 * blen tmp08.l = tmp + 7 * blen tmp09.l = tmp + 8 * blen tmp10.l = tmp + 9 * blen tmp11.l = tmp + 10 * blen tmp12.l = tmp + 11 * blen tmp13.l = tmp + 12 * blen tmp14.l = tmp + 13 * blen tmp15.l = tmp + 14 * blen tmp16.l = tmp + 15 * blen tmp17.l = tmp + 16 * blen tmp18.l = tmp + 17 * blen tmp19.l = tmp + 18 * blen tmp20.l = tmp + 19 * blen tmp21.l = tmp + 20 * blen tmp22.l = tmp + 21 * blen tmp23.l = tmp + 22 * blen tmp24.l = tmp + 23 * blen tmp25.l = tmp + 24 * blen tmp26.l = tmp + 25 * blen tmp27.l = tmp + 26 * blen tmp28.l = tmp + 27 * blen tmp29.l = tmp + 28 * blen tmp30.l = tmp + 29 * blen tmp31.l = tmp + 30 * blen tmp32.l = tmp + 31 * blen omax.l = (img_width-1) LSR 4 For y.l = 0 To img_height-1 ; for each line For o.l = 0 To omax ; go for all 16 pixel flag.l = 1 LSL 15 plane01.l = 0 plane02.l = 0 plane03.l = 0 plane04.l = 0 plane05.l = 0 plane06.l = 0 plane07.l = 0 plane08.l = 0 plane09.l = 0 plane10.l = 0 plane11.l = 0 plane12.l = 0 plane13.l = 0 plane14.l = 0 plane15.l = 0 plane16.l = 0 plane17.l = 0 plane18.l = 0 plane19.l = 0 plane20.l = 0 plane21.l = 0 plane22.l = 0 plane23.l = 0 plane24.l = 0 plane25.l = 0 plane26.l = 0 plane27.l = 0 plane28.l = 0 plane29.l = 0 plane30.l = 0 plane31.l = 0 plane32.l = 0 o4.l = o LSL 4 oend.l = Min(o4+15,img_width-1) For x.l = o4 To oend dat.l = Peek.l( ARGBptr + (x*bpp+y*bpr) ) ; red If datPF_R1 Then plane01 | flag If datPF_R2 Then plane02 | flag If datPF_R3 Then plane03 | flag If datPF_R4 Then plane04 | flag If datPF_R5 Then plane05 | flag If datPF_R6 Then plane06 | flag If datPF_R7 Then plane07 | flag If datPF_R8 Then plane08 | flag ; green If datPF_G1 Then plane09 | flag If datPF_G2 Then plane10 | flag If datPF_G3 Then plane11 | flag If datPF_G4 Then plane12 | flag If datPF_G5 Then plane13 | flag If datPF_G6 Then plane14 | flag If datPF_G7 Then plane15 | flag If datPF_G8 Then plane16 | flag ; blue If datPF_B1 Then plane17 | flag If datPF_B2 Then plane18 | flag If datPF_B3 Then plane19 | flag If datPF_B4 Then plane20 | flag If datPF_B5 Then plane21 | flag If datPF_B6 Then plane22 | flag If datPF_B7 Then plane23 | flag If datPF_B8 Then plane24 | flag ; alpha If datPF_A1 Then plane25 | flag If datPF_A2 Then plane26 | flag If datPF_A3 Then plane27 | flag If datPF_A4 Then plane28 | flag If datPF_A5 Then plane29 | flag If datPF_A6 Then plane30 | flag If datPF_A7 Then plane31 | flag If datPF_A8 Then plane32 | flag flag LSR 1 Next o2.l=o LSL 1 Poke.w tmp01+o2,plane01 Poke.w tmp02+o2,plane02 Poke.w tmp03+o2,plane03 Poke.w tmp04+o2,plane04 Poke.w tmp05+o2,plane05 Poke.w tmp06+o2,plane06 Poke.w tmp07+o2,plane07 Poke.w tmp08+o2,plane08 Poke.w tmp09+o2,plane09 Poke.w tmp10+o2,plane10 Poke.w tmp11+o2,plane11 Poke.w tmp12+o2,plane12 Poke.w tmp13+o2,plane13 Poke.w tmp14+o2,plane14 Poke.w tmp15+o2,plane15 Poke.w tmp16+o2,plane16 Poke.w tmp17+o2,plane17 Poke.w tmp18+o2,plane18 Poke.w tmp19+o2,plane19 Poke.w tmp20+o2,plane20 Poke.w tmp21+o2,plane21 Poke.w tmp22+o2,plane22 Poke.w tmp23+o2,plane23 Poke.w tmp24+o2,plane24 Poke.w tmp25+o2,plane25 Poke.w tmp26+o2,plane26 Poke.w tmp27+o2,plane27 Poke.w tmp28+o2,plane28 Poke.w tmp29+o2,plane29 Poke.w tmp30+o2,plane30 Poke.w tmp31+o2,plane31 Poke.w tmp32+o2,plane32 Next If compress For o.l = 0 To bitdepth-1 blenC.l = ilbm_RLEncode{tmp+blen*o,tmpC,blen} If blenC>0 file_WriteMem {dos,tmpC,blenC} End If Next Else file_WriteMem {dos,tmp,blen*bitdepth} End If Next file_CloseChunk{dos,@"BODY"} P.S: Ja, ich weiss dass es Arrays gibt. Hier geht es nicht um Esthetik, sondern um Speed. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 16.09.2008 um 22:51 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
16.09.2008, 20:15 Uhr [ - Direktlink - ] |
Thema: iff24 Speichern?
Brett: Programmierung Meine Antwort wie immer: in Amiblitz waere das... image_Save{0,"myImage.iff",@"ILBM"} oooder schau dir den Code dazu an. "iff/ilbm.include.bb2". Du musst die 24bit RGB Daten in 24 einzelne Bitplanes verwandeln. Das ist super ineffizient und langsam, deshalb gibt es auch das "DEEP" Format, was aber nicht ganz offiziell ist und nicht unbdingt immer unterstuetzt wird. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
15.09.2008, 13:41 Uhr [ - Direktlink - ] |
Thema: Google-Browser
Brett: Andere Systeme Das Problem ist halt auch, dass wir hier alle Freax sind, und das Internet nicht wie Otto-Normal-Verbraucher nutzen. Wenn der "Digital Bilder" eingibt, sucht er vermutlich tatsächlich einen Anbieter für Bilderabzüge, und kein Tutorial über Bildbearbeitung. Lustig finde ich immer nur, wenn die Suchmaschienen den eingegebenen Begriff plump "echoen" umd auf die Seite zu locken, z.B. man gibt "Voxelengine" ein und es erscheint "Voxelengine - bei uns 60% günstiger!". Aber mittlerweile passier das nicht mehr so oft. Bei Google bekomme ich oft Wikipedia Seiten, was durchaus passend ist. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
11.09.2008, 10:14 Uhr [ - Direktlink - ] |
Thema: 132 Euro AGL2
Brett: Get a Life Hm, nun oeffentlicher Dienst != Beamter. Wenn man die 300 ungrad Euro von Hartz4 betrachtet, darf man das nicht mit den 1500 Euro aus einer Taetigkeit vergleichen. Zusaetlich zu den 300+ Euro kommen noch jede Menge mehr oder weniger versteckte Leistungen, die der Arbeitende von seinen 1500 bestreiten muss. Wohngeld, Heizkostenzuschuss, Krankenversicherung unter Risiko, Sachleistungen auf Antrag, Sozialanschluss fuers Fernsehen. Bei dem Arbeitnehmer hingegen gehen noch jede Menge Zahlungen ab, GEZ, Auto/Fahrtkosten, angemessene Kleidung (z.B. Anzuege, Krawatten, Schuhe), Haftpflicht, Rechtsschutz, Hausrat, Steuerberater und und und. Dazu kommt, dass der Arbeitslose >>9h mehr Zeit pro Tag zur Verfuegnung hat. Und wie wir wissen, ist Zeit=Geld. Beispielsweise kann er viele Strecken mit dem Rad oder zu Fuss zuruecklegen, die ein Arbeitnehmer schlicht aus Zeitgruenden mit der Bahn oder dem Auto besteiten muss. Der Arbeitnehmer hat weniger Zeit, Preise zu vergleichen. Waehrend ein Arbeitsloser durchaus zwei oder drei Geschaefte besuchen kann, um sich die jeweils guenstigsten Gueter rauszusuchen, muss der Arbeitnehmer aus Zeitgruenden kaufen, was da ist. Der Arbeitnehmer muss moeglicherweise waehrend der Mittagspause essen gehen, oder auch am Abend, weil er schlichtweg keine Zeit hat oder zu erschoepft ist um guenstiger selbst zu kochen. Der Arbeitslose kann auch Reperaturarbeiten oder Renovierung selbst vornehmen, wo ein Arbeitnehmer einen Handwerker beauftragen muss. Denn z.B. im oeffentlichen Dienst ist der Arbeitnehmer verpflichtet, an Urlaubstagen sich zu erholen um die Arbeitskraft zu erhalten. Hobbies, die die Arbeitskraft beeintraechtigen koennten sind untersagt. Wenn ich es mir recht ueberlege, muesste ein Arbeitsloser die Zeit (z.B. 1EUR pro h) als geldwerten Vorteil versteuern muessen, da er hier aus seiner "Nicht-Taetigkeit" heraus Wertschoepfung erzielen kann. Wer bei Daimler arbeitet und ein Auto zum selbstkosten Preis bekommt, muss die Differenz zum Marktpreis auch als Einkommen versteuern. Wie auch immer, ich weiss schon, dass 300EUR pro Monat nicht ueppig sind, ich war selbst Student und musste mit 250 auskommen. Es gibt nunmal kein Grundrecht auf einen gewissen Lebensstandard. Wenn man selbst kein Geld verdient, ist der eben nur so hoch, wie einem die Leistungstraeger zugestehen, da darf man sich nicht beschweren. In Japan z.B. gibt es keine Sozialsysteme. Dort werden Arbeitslose von ihren Verwandten/Bekannten versorgt oder bekommen Zelte vom Staat und leben in Parks. Dort bekommen sie Essen von freundlichen Mitbuergern. Was mich beeindruckt hat: In Japan habe ich keinen Obdachlosen Alkohol trinken sehen, alle strahlten eine gewisse Wuerde aus und haben teilweise Buecher gelesen. Angepoepelt hat mich keiner. Aber das ist eine andere Welt, kann man nicht vergleiche. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 11.09.2008 um 10:29 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
10.09.2008, 15:10 Uhr [ - Direktlink - ] |
Thema: Texteditor mit Zeilenumbruch gesucht
Brett: Amiga, AmigaOS 4 Achja, EditPad von OS3.5/9 hat Word-Wrap. Evtl. geht EditPad ja mit ClassAction als Reaction Ersatz, ich befürchte aber nicht. TuiTED hat kein Word-Wrap, sollte aber unter 3.1 gehen. BTW, warum sollte TuiTED zu langsam sein? Ich denke die Zeichenroutienen sind ziemlich schnell, auch die Geschwindigkeit des Editierens von Texten hängt nicht von deren Länge ab (wie z.B. bei Windows Editor). Nur das reinladen großer Texte könnte etwas länger dauern. (>>1MB). Dafür gibt's HTML, C Highlightning und HEX Editor, einen FileBrowser der auch Bilder und Sounds anzeigen kann. Vielleicht wäre das ja mal die Gelegnheit, in TuiTED Word-Wrapping einzubauen. Sag bescheid wenn es vernünftig läuft. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
09.09.2008, 14:18 Uhr [ - Direktlink - ] |
Thema: Texteditor mit Zeilenumbruch gesucht
Brett: Amiga, AmigaOS 4 TuiTED: http://www.hd-rec.de/Archive/TuiTED.lha Was du meinst ist wohl TAB (ASCII #9). Welche Auflösung fährst du denn? TuiTED kann sich auch sehr klein machen, wenn du den FileBrowser deaktivierst. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 09.09.2008 um 14:19 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
04.09.2008, 10:53 Uhr [ - Direktlink - ] |
Thema: Google-Browser
Brett: Andere Systeme Auch ich hab mir Chrome installiert, und bin positiv ueberrascht, obwohl ich mittlerweile eine gesunde Abneigung zu Gogle habe. Der Browser nutzt mehr vom Bildschirm, hat wenig Koepfe, ahbe aber trotzdem nichts vermisst. Gegenueber dem IE7 ist er super flott, vor allem der Start, dabei hat er im Gegensatz zum IE keinen "Heimvorteil". Er ist OpenSource und soll von Google selbst fuer MacOS und Linux portiert werden. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
01.09.2008, 12:17 Uhr [ - Direktlink - ] |
Thema: 4-Byte char => int?
Brett: Programmierung Basis256 heisst ja nicht, dass ich für die IDs Zeichen>127 benutzen muss. Aber ich verstehe schon das Dilemma. Habe mich jetzt mit der #define Variante angefreundet. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
29.08.2008, 21:34 Uhr [ - Direktlink - ] |
Thema: 4-Byte char => int?
Brett: Programmierung Es geht nicht um IFF. Und ich weiss auch, dass man sích vorher eine Konstante erstellen kann. Ich dacht nur, es gibt eine einfache Möglichkeit eine Zahl zu erstellen mit Basis 256. Im Idealfall sind da gar keine Strings oder Character Arrays involviert. Wie bei AB3 eben, da ist @"TEST" eine 32bit integer Zahl, kein String und auch kein Char Array, signed oder unsigned spielt keine Rolle, erst wenn man hinterher damit rechnen will. Eben so: 0xDEADBEEF 0cRIND das wäre ideal. Ok, gibts nicht, muss ich halt anders machen. Man muss an das Thema aber nicht gleich so emotional rangehen, oder? Wenn ich das Programm in AB3 scheiben könnte, müsste ich ja hier nicht nach C fragen. Es geht um ein Program, was in C geschrieben werden muss. Ich habe jetzt den Ratschalg befoglt, und Konstanten definiert. Hat natürlich auch seinen Vorteil, dass bei der Load und bei der Save Routine Schreibfehler ausgeschlossen sind. Danke an euch alle! -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 29.08.2008 um 22:02 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
29.08.2008, 17:14 Uhr [ - Direktlink - ] |
Thema: 4-Byte char => int?
Brett: Programmierung Ok, das war für reinrassige C-Progger wohl etwas zu schwammig formuliert. Eigentlich suche ich eine Möglichkeit, 32bit Zahlen im base256 Format anzugeben. Also analog zum base16(Hex) oder bin: int a = 0b1010101010101011111011011110111; int b = 0xDEADBEEF; int c = 0cRind; 0c stehe jetzt mal für base256. In AB3 verwende ich das häufig für Tags oder andere Identifier, z.B. image_Save{0,"myfile.jpg",@"JPEG"} ahi_SaveSound{0,"myfile.mp3",@"MP3"} -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
29.08.2008, 13:47 Uhr [ - Direktlink - ] |
Thema: 4-Byte char => int?
Brett: Programmierung @thomas: Danke für den Hinweis. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
29.08.2008, 13:14 Uhr [ - Direktlink - ] |
Thema: 4-Byte char => int?
Brett: Programmierung @thomas: Hm, das ist aber nicht wirklich kürzer sonder länger, und ich hab das ',' Gewurschtel nur nach oben verschoben, wo es noch undurchsichtiger wird, z.B. wenn dort ein Schreibfehler passiert und ich mich beim Betrachten der Zeile "case TYPE" wundere, warum das nicht funzt. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
Der_Wanderer
Nutzer
29.08.2008, 13:05 Uhr [ - Direktlink - ] |
Thema: 4-Byte char => int?
Brett: Programmierung Das mit dem IFF-Header war nur ein Beispiel. Es geht nicht um eine IFF Datei, sondern um ein eigenes Dateiformat mit "tagged" Daten, d.h. Die Datei ist so aufgebaut: code:etc.char[4] tagID int tagValue char[4] tagID int tagValue ... Bisher mache ich das so: code:Aber ich würde gerne die vielen ',' loswerden.#define int4(A,B,C,D) (int)(A|B<<8|C<<16|D<<24) ... switch(tagID) { case int4('T','Y','P','E') : type = tagValue; break; case int4('W','D','T','H') : width = tagValue; break; case int4('H','I','G','H') : height = tagValue; break; ... } In Amiblitz sähe das so aus: code:Select(tagID) case @"TYPE" : type = tagValue case @"WDTH" : width = tagValue case @"HIGH" : height = tagValue ... End Select Sinn eines solchen Dateiformates ist es, dass es leicht Erweitert oder Reduziert werden kann ohne Kompatibelität zu verlieren, ähnlich wie XML oder HTML, aber mit weniger Speicheraufwand und schnellerem parsen. Ausserdem lässt sich so eine Datei leicht in einem Hex Editor modifizieren, ohne dass man sie Struktur kennen muss. -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ Dieser Beitrag wurde von Der_Wanderer am 29.08.2008 um 13:08 Uhr geändert. ] |
|||||
Der_Wanderer
Nutzer
29.08.2008, 12:23 Uhr [ - Direktlink - ] |
Thema: 4-Byte char => int?
Brett: Programmierung Hallo! In Amiblitz kann man einen 4 Byte grossen String wie ein 32bit Integer benutzen. Z.B. so: If header=@"FORM" Then ... was sehr praktisch ist. Vor allem in C wäre sowas praktisch, wo die String Handhabung etwas umständlicher ist. Daher meine Frage: Gibt es soetwas in C, oder kann jemand ein Macro posten das sowas ähnliches macht? Konket lese ich Chunk IDs aus einer Datei, und will sie mit Switch vergleichen. Also Switch(header) { case "FORM" : ... case "BODY" : ... case "CMAP" : ... } so in der Art. Danke schonmal! -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de |
|||||
|
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |