

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.


