Fragen der Leser und Antworten der "Redaktion" zu Themen des Programmierens und zu MicroCode 1.Frage: Darf ich ein Programm, das ich mit TurboVision erstellt habe, am Shareware-Markt anbieten ? > Wenn du dir ein Programmpaket wie TP 6 oder 7 oder BP 7 gekauft hast, also keine Raubkopie davon besitzt, und du somit der rechtmige Besitzer der Programmiersprache bist, darfst du das Programm, sofern es von dir entwickelt worden ist, ver- kaufen. Vorraussetzung dafr ist allerdings, da es sich bei dem Programmpaket nicht um eine ermigte Schulversion han- delt. Also, hast du dir das Programm beim Hndler wie ein nor- maler Anwender zugelegt, darfst du deine komplett selbstent- wickelten Programme verkaufen.(EdS) 2.Frage: Es gibt da den Befehl SetRGBPalette, aber es gibt keinen Befehl namens GetRGBPalette ! Wie krieg ich die Werte der RGBPalette in ein Array hinein ? > Tja, die gibt es auf jeden Fall die Mglichkeit, die RGB-Werte mittels der Port-Abfrage herauszubekommen (h, ist das wirklich ein Wort?). Und das geht so: PROCEDURE GetRGBPalette; var RGB : ARRAY [1..768] OF BYTE; {256 Farben 3 Werte} i : BYTE; BEGIN FOR i := 0 TO 255 DO BEGIN PORT[$03C8] := i; RGB[i*3] := PORT[$03C9]; {R-Wert von Farbe i} RGB[i*3+1] := PORT[$03C9]; {G-Wert von Farbe i} RGB[i*3+2] := PORT[$03C9]; {B-Wert von Farbe i} END; END; Naja, ich hoffe, es funzt (geschrieben um 0:30 UHR und nicht ausprobiert... also: kein Gewehr!). Dumm ist jetzt natrlich (sehe ich gerade), da die RGB-Palette in einem lokalen Feld gespeichert werden... tja, Du wirst es schon richtig hinbe- kommen. Ansonsten: Schreib noch mal oder schick mir ein Tele- gramm oder so (oder mach mal ne Fernsehsendung oder ne Radio- durchsage oder press ne CD oder mach Rauchzeichen oder ruf mal laut oder back Dir ein Eis oder la Dir Flgel wachsen oder so... ;-)). (Kemil) 3.Frage: Warum ist PutImage so langsam ? Animationen mit Sprites sind unmglich, auch wenn die Sprites noch so klein sind, da alles flimmert, und die Sprites durchsichtig zusein scheinen. > Tja, die Antwort lautet: BGI! Der BGI-Aufsatz fr Grafiken ist so dermaen langsam, da man (eigentlich) gnzlich darauf ver- zichten sollte... nur: er ist so ntzlich! Dafr da er halt auf jeder Grafikkarte funktioniert und einige recht aufwendige Funktionen zur Verfgung stellt (Circle, Bar, FillPoly etc.) mu man halt auch die langsamere Ausfhrungsgeschwindigkeit in Kauf nehmen. Wie man das jetzt schneller machen knnte, kann ich Dir nicht sagen, da ich mich a) noch nie mit dem Prob be- schftigt habe und ich b) (selbst wenn ich bescheid wte) nicht wei, in welchem Grafikmodus Du Animationen erstellen willst. Naja, vielleicht findet sich ja jemand, der das mal machen wrde (?!?). (Kemil) 4.Frage: Ab und zu kommt es vor, da das Programm Pausen (ReadLn, Repeat Until Keypressed) einfach berspringt, auch wenn ich 10mal hintereinander eine Pause mache ! Mu ich vorher den Tastaturbuffer lschen ? Wenn ja, wie ? > Du hast die Sache schon mal richtig erfat. Du mut den Tasta- turbuffer lschen. Eine Anweisung wie IF KeyPressed = TRUE THEN REPEAT CH := ReadKey; UNTIL KeyPressed = FALSE; REPEAT UNTIL KeyPressed; bewirkt zuerst das Auslesen des Buffers und dann die Abfrage nach einem Tastendruck. Bei "ReadLn" drfte dieses Problem aber nicht auftreten, da es sich dabei um die [Return]-Taste han- delt. Nur wenn diese Taste noch im Tastaturbuffer ist, findet bei "ReadLn" keine Pause statt.(EdS) 5.Frage: Wie kann ich den Wert einer Variable aus einer Unit ins Hauptprogramm/Unit bernehmen ? Ein Beispiel: Ich habe eine Unit namens Setup. In Setup wir die Anzahl der Spieler abgefragt, und in der Variable "Spieler" gespeichert. Nach dem Ende der Unit Setup wird die Unit Spiel geladen. Wie krieg ich jetzt den Wert der Variable "Spieler" in die Unit Spiel ? > Es gibt zwei Mglichkeiten: Die erste wre, da man eine temporre Datei ffnet, in die die Zahl der Spieler reinge- schrieben wird. Komfortabel ist das nicht, weil diese Datei sehr statisch ist, da ja beide Units schon im voraus wissen mssen, wo sich diese Datei befindet. Die Lsung wre hier also, da sich die Datei im Hauptverzeichnis von Laufwerk C: befindet. Der Vorteil dieser Methode ist, da man mglicher- weise spter noch mal andere Daten in diese Datei reinschreiben kann. Eine andere Methode ist folgende: Bei der Prozedurkopf- Deklaration kann der Ziel-Prozedur eine oder mehrere Variablen bergeben werden: PROCEDURE Spiel(Zahl1 : BYTE; Zahl2 : WORD); Die beiden Variablen knnen nun von der Prozedur SPIEL verwen- det werden. Doch diese Prozedur kann auch eine Variable zurck- liefern, die aber von der aufrufenden Prozedur deklariert werden mu: PROCEDURE Spiel(Zahl1 : BYTE; Zahl2 : WORD; VAR Zahl3 : BYTE); "Zahl1" und "Zahl2" kann von "SPIEL" verwendet werden, "Zahl3" kann von "SPIEL" mit einer Zahl belegt werden und zurckgelie- fert werden. Ein Programm: **************************************************************** PROGRAM SpielerTest; USES Spieler; VAR AnzahlSpieler : BYTE; BEGIN {...} Spiel(14, 25, AnzahlSpieler); WriteLn(AnzahlSpieler); {...} END. ---------------------------------------------------------------- UNIT Spieler; INTERFACE PROCEDURE Spiel(Zahl1 : BYTE; Zahl2 : WORD; VAR AnzahlSpieler : BYTE); IMPLEMENTATION PROCEDURE Spiel(Zahl1 : BYTE; Zahl2 : WORD; VAR AnzahlSpieler : BYTE); BEGIN AnzahlSpieler := Zahl1+Zahl2; END; END. **************************************************************** Sonst gibt es natrlich der Einfachheit halber auch die Mg- lichkeit, das Ganze mit Hilfe einer FUNCTION zu tun, die ja als Variable eingesetzt werden kann und automatisch etwas zurckliefert. 6.Frage: Kann mir jemand ein gutes Einsteigerbuch zu Turbo Vision empfehlen oder sogar anbieten ? > N... ;-) (Kemil) 7.Frage: Kann mir jemand ein gutes Einsteigerbuch zu Assembler empfehlen ? Kann man mit dem Assembler von TurboPascal 6.0 als Einsteiger dann was anfangen ? > Ich selber (Kemil) habe mit einem kleinen Taschenbuch ange- fangen (irgendetwas mit Einsteiger Buch Assembler, erschienen bei RORORO fr 19,80 DM - ist eine groe 'A'-Taste drauf!). Allerdings kann man ASM eigentlich gar nicht aus einem Buch lernen. Man kann sich nur die Grundlagen zusammen suchen - gerade in Assembler macht die PRAXIS das meiste aus (meine Meinung). (Kemil) 8.Frage: Ich suche Units zum einlesen von verschiedenen Grafikformaten (PCX, GIF, ...) und zwar auch in hheren Grafikmodi (320x400, 640x400, 640x480, 1024x7??) und in 256 Farben ! Kann mir jemand so etwas anbieten ? > Wart mal, fr 640x480x256 und 1024x768(!!!)x256 fr VESA-Karten hab ich da etwas (selbstgestrickt). Diese Dateien sind im Ver- zeichnis VESAKART. (Kemil) 9.Frage: Ich habe meinen PC (286 ohne Soundkarte) an die Stereo Anlage angeschlossen. Nun hab ich von einem Freund ein paar Sounddatein bekommen. Ich war berrascht wie gut die Qualitt auch ohne Soundkarte sein kann (mit groen Boxen). Jetzt meinen Frage: gibt es irgend einen Driver fr Turbo Pascal 6.0, mit dem ich solche Daten von einem eigenen Programm aus abspielen kann ? > Nun, es kommt darauf an, um was fr Dateien es sich handelt: RAW- , VOC- , WAV- , MOD-Files oder noch andere Dateien. Alle sind sie unterschiedlich aufgebaut und fr alle gibt es unter- schiedliche Mglichkeiten und Programme, die sie abspielen knnen. Meist wird dazu aber eine Treiber bentigt, z.B. der von Creative Labs (Soundblaster). Viele Bcher, die von der Soundprogrammierung handeln, enthalten Routinen und Proceduren, mit deren Hilfe man Sound-Dateien abspielen kann.(EdS) 10.Frage: Ich habe ein paar bereits kompilierte Units die schon etwas lter sind. In Turbo Pascal 5.0 laufen sie hervorragend, im 6er aber berhaupt nicht. Kann ich diese Units irgendwie, auch ohne Quelltexte, kompatibel zu TP 6.0 machen ? > Ohne Quelltexte besteht diese Mglichkeit leider nicht. Nor- malerweise sind aber alle TP-Units aufwrtskompatibel, d.h. Units aus TP 5 laufen unter TP 6 und TP 7 u.s.w. Mich wundert, da die Sache bei dir nicht funktioniert. Es kann hchstens sein, da er die Unit nicht findet, weil du eine falsche Pfad- angabe im Menpunkt "Optionen-Linker" gemacht hast. Dein Pro- blem ist bei lngerem nachdenken eigentlich unmglich! Schick' mir die Units mal zu.(EdS) 11.Frage: Was hat es mit "BinObj.exe" auf sich ? > Mit BinObj kannst Du Binr-Dateien in Obj-Datein umformen (ach ne, sach nicht sowas ;-)). Die einzig mir bekannte, sinnvolle Anwendung findet diese Programm bei der Konvertierung von BGI- und CHR-Dateien in OBJ-Dateien, da man OBJs in Pascal einlinken kann und sie somit nicht immer beipacken mu. Schau Dir mal die Datei 'BGILink.PAS' (bei TP6) an, da steht das alles erklrt. (Kemil) 12.Frage: Kann ich alle Dateien (Units, Proceduren, ...), die ein Programm bentigt, ins Programm ein- binden, so da ich dann nur eine Exe-Datei im Verzeichnis stehen habe ? > Natrlich. Normalerweise macht der Compiler das auch. Es sei denn, du hast die Units als Overlays definiert. Die Prozeduren und Funktionen sowie die globalen Variablen des Hauptprogramms werden in eine EXE-Datei geschrieben. Die Units auch, wenn sie keine Overlays darstellen.(EdS) 13.Frage: Ich wrde mich gerne fr MicroCode registieren lassen und es auch gleich abonnieren ! Wie mach ich das ?? > Schick' einen Brief, da du das mchtest (hast du ja hiermit gemacht) und die Sache ist geritzt. Das Geld, das du mitge- schickt hast, verwalten wir fr dich. Wenn du willst, wird es dir auch mit der nchsten Ausgabe komplett ausgezahlt. Eine extra Registration ist nicht mehr notwendig, da wir die Daten (Name und Adresse) fr uns sofort speichern. Somit bist du au- tomatisch registriert, wenn du uns fr MicroCode einen Brief schickst. Auf Wunsch werden diese Daten gelscht, sptestens aber nachdem das Konto von dir bei uns erschpft ist oder nicht mehr fr die nchste Ausgabe reicht und du vier Monate lang nicht mehr gemeldet hast.(EdS) 14.Frage: Wann gilt die 65-Zeichen-Regelung? > Die "65-Zeichen-Regelung" sollte am besten bei allen Texten gelten, die ihr fr MicroCode verfasst. Wenn ihr z.B. Buchvor- stellungen oder Programmierthemen schreibt, die wohl garan- tiert mit in die nchste Ausgabe einbezogen werden, so solltet ihr am besten an der 65. Position (wohlgemerkt: nicht beim 65. Zeichen, sondern an der 65. Stelle) in der Zeile Schlu machen. Fr ganz private Briefe an die Redaktion oder an einen von uns speziell, die nicht verffentlicht werden sollen, da knnt ihr auch ruhig 1.007.386.486.08,15 Zeichen pro Zeile benutzen.(EdS) Mitlerweile haben wir aber auch ein Progrmmchen dafr (Dank geht an James Cocktail!), das (sobald wir verstanden haben, wie man es bedient ;-)) die Aufgabe bernehmen soll. (Kemil) 15.Frage: Mu ich zu den 3 DM Gebhr noch Porto drauflegen, oder ist es inklusive? > Ab dieser Ausgabe gilt: Nur Disk und Rckporto schicken. Es gibt keinen Mitgliedsbeitrag o.. Die Sache mit dem Clubkonto gilt allerdings weiterhin. PS: Spenden werden nicht abgewiesen!(EdS) 16.Frage: Was ist das mit dem Club-Konto?? > Man knnte sagen, da du fr eine bestimmte Anzahl von Ausgaben im voraus bezahlst. Du schickst 9 DM und wir schauen, wieviele Ausgaben du davon zugeschickt bekommen kannst. Dabei knnen die Disx mitberechnet werden, z.B. 1,30 Porto pro Ausgabe + ca. 90 Pfg. pro Disk. Macht zusammen ca. 2 DM bis 2,50 DM. => 9 DM / 2,50 = ca. 3,8 . Das heit, das du fr 3 Ausgabe im voraus bezahlt hast. Bei der 3. Ausgabe lge dann ein Hinweis bei, da du mehr Geld schicken mut. brigens: Das Club-Konto kann auch jederzeit ausbezahlt werden, allerdings mu das Porto dann von dir bezahlt werden.(EdS) 17.Frage: Lat bitte solche Jokes wie:Tremor installiert, HDD formatiert, Headcrash verursacht +so. Es gibt Menschen die schockt das WIRKLICH RICHTIG. Die wrden es fertig bringen, den Computer abschalten, und einen Headcrash veranstalten.(einen RICHTIGEN!) > Ja, ja, mal sehen. Es war schlielich April! Ich mchte nur wissen, wer deinen PC nach deinem RICHTIGEN Headcrash wieder in Ordnung bringt...;-) (EdS) 18.Frage: Leider wute ich nicht, welche Zeichen erlaubt, und welche verboten sind. Ihr mt vielleicht meinen Brief nachbearbeiten. > Und nochmal: Es sind alle Zeichen des deutschen Alfapeds er- laubt, ", , , " mit eingeschlossen. Weiterhin kannst du im Grunde alle Zeichen miteinbeziehen, die auf der deutschen Tastatur vorhanden sind, z.B. _#*()/\{ ... (EdS) Nur die verdammten TABS von Windows sollten weg- gelassen werden!!! (Kemil, der es nicht ganz so ernst meint) 19.Frage: Ich habe eine Datei beigelegt. Schaut mal rein, und sagt mal ob das so OK ist!? > SELBSTVERSTNDLICH ist das OK !!! Egal was du schreibst, es ist wichtiger, da du berhaupt schreibst, und meist sind die Sachen ja auch noch zu gebrauchen. Also: Weiter so Mc-F! (EdS) HINWEISE: Wir versuchen natrlich, die Fragen so gut, genau und praxisnah wie nur mglich zu beantworten. Doch wir wissen nicht alles. Bei einigen Fragen mssen wir passen, andere sind einfach falsch be- antwortet worden. Deshalb gilt: Alle Antworten sind ohne Gewhr auf deren Richtigkeit oder Funktionalitt.