Juniors WorkstationLidos BerlinComputer PassDies und Das
Nutzungsbedingungen    Datenschutz    Impressum       Kontakt        Registrieren       <== zurück zur Startseite    
 
  Lernen durch Lehren
 
  LDL - Wissenswertes
  LDL - Hardwaretests
  LDL - Softwaretests
  LDL - Tipps & Tricks
  LDL - Workshops
 


  Profan² Einsteiger FAQ 7.5
 
  Profan² Einsteiger FAQ 7.5
  Profan² an die Schulen
  Profan² Script - FAQ
  Profan² Erweiterungen
  Profan² Helferlein
  Profan² Quellcode
 


  HTML Einsteiger FAQ 4.07
 
  HTML Einsteiger FAQ 4.07
  HTML indirekte Fragen
  kleine JavaScript FAQ
 


250 MB mit PHP / MySQL
 
Sie suchen noch Webspace, der kosten- und werbefrei ist, PHP (5.x) und MySQL (3.x) unter- stützt ...

Sie haben Fragen und benötigen Antworten
 
Das verstehen wir - und genau aus diesem Grund haben wir versucht, auf Ihre (am häu- figsten) gestellten Fragen zu antworten.
 
Lern- und Lehrbereich: Juniors Workstation
 
   einen Beitrag auswählenzum Anfang eine Seite zurück  eine Seite vor zum Ende     
   Bereich Kennung Zuordnung Klick Titel 
11  Workstation FAQ Profan Profan-FAQ105437  Profan² - eine Programmiersprache Profan-FAQ - Profan² - eine Programmiersprache
12  Workstation FAQ Profan Profan-FAQ40038  Profan² - dieser Name steht für ein Programmiersystem Profan-FAQ - Profan² - dieser Name steht für ein Programmiersystem
13  Workstation FAQ Profan Profan-FAQ45569  Profan² - eine Scriptsprache Profan-FAQ - Profan² - eine Scriptsprache
14  Workstation FAQ Profan Profan-FAQ45334  Profan² - eine Datenbank-Sprache Profan-FAQ - Profan² - eine Datenbank-Sprache
15  Workstation FAQ Profan Profan-FAQ43543  Profan² - Versionen im Download Profan-FAQ - Profan² - Versionen im Download
16  Workstation FAQ Profan Profan-FAQ47127  Was sind Ereignisse? Profan-FAQ - Was sind Ereignisse?
17  Workstation FAQ Profan Profan-FAQ47467  Was ist eine Multimedia-Schnittstelle? Profan-FAQ - Was ist eine Multimedia-Schnittstelle?
18  Workstation FAQ Profan Profan-FAQ50201  Was ist und enthält eine Windows-Nachricht? Profan-FAQ - Was ist und enthält eine Windows-Nachricht?
19  Workstation FAQ Profan Profan-FAQ47690  Definitionen, Funktionen und Operatoren unter Profan² Profan-FAQ - Definitionen, Funktionen und Operatoren unter Profan²
33  Workstation FAQ Profan Profan-FAQ48705  Einiges über Variablen und Platzhalter ... Profan-FAQ - Einiges über Variablen und Platzhalter ...

135 registrierte Beiträge gefunden; davon werden aktuell 10 angezeigt. 

 
   Was sind Bereichsvariablen?

Bereichsvariablen werden verwendet, wenn Strings, aber auch Zahlen übergeben werden sollen, sowohl an als auch von einer API-Funktion. Dazu muß die Variable entsprechend dimensioniert werden.

Im Prinzip ist eine Bereichsvariable eine Art Positionsangabe, wo im Computerspeicher eine bestimmte Information zu finden ist. Diese Positionsangabe wird an die Funktion übermittelt, die sich die Daten dann von der angegebenen Stelle holt oder ihrerseits Daten dort ablegt.

Eine solche Positionsangabe wird auch Pointer oder Zeiger genannt. Dahinter verbirgt sich ein LongInt-Wert, der alle Informationen zum Auffinden eines solchen Speicherbereiches enthält:

   declare Test#
   dim Test#,1
   print Test#
   dispose Test#

Bei der Dimensionierung wird die Größe des benötigten Bereiches festgelegt, damit dieser Bereich reserviert und vor Überschreiben geschützt wird. Darum muß eine Bereichsvariable, nachdem sie ihre Schuldigkeit getan hat, mit "DISPOSE" wieder freigegeben werden, da die Reservierung sonst bestehen bliebe, bis der Rechner neu gestartet wird.

Für erste Versuche reicht es aus, die Dimensionierung so zu wählen, daß sie sicher groß genug ist, da bei der Zuweisung des Strings mit "String V,A=S" automatisch ein NullByte "chr$(0)" angehängt wird, an dem die Funktion das Ende des Strings erkennt. Dafür bietet sich der Wert 255 an, da dies ohnehin die Maximalläge von Strings ist.

Eleganter ist allerdings eine optimierte Dimensionierung:

  • Man ermittelt die Länge des zu übergebenden Strings und
  • erhöht den Wert um 1 (für das anzuhängende "NullByte")

 

   declare Name$,Name#
   let Name$="Dies ist ein Test"
   dim Name#,@add(@len(Name$),1)
   string Name#,0=@add$(Name$,chr$(0))
   dispose Name#

Für die Rückgabe von API-Funktionen gibt es drei Möglichkeiten:

  1. Man wählt eine sicher ausreichende Dimensionierung, da beim Auslesen mit "@String" der String am ersten NullByte abgeschnitten wird.

  2. Man ermittelt durch andere API-Funktionen vorher die Länge des gewünschten Strings. Dies ist z.B. bei vielen Registry-Funktionen möglich.

  3. Manche Funktionen liefern für den Fall, daß die Bereichsvariable zu klein dimensioniert ist, eine Fehlermeldung und/oder die real benötigte Größe der Variablen. Man kann dann nach entsprechender Anpassung der Dimensionierung den Funktionsaufruf wiederholen.

 

Für den Fall, daß durch die Bereichsvariable numerische Werte übergeben/erfragt werden sollen, steht die benötigte Größe fest. Dies ist häufig bei Strukturen der Fall, bei denen bestimmte Werte an festgelegte Stellen innerhalb einer Bereichsvariablen vom Anwender oder der aufgerufenen Funktion abgelegt werden.

©2012 Lidos Berlin - alle Rechte vorbehalten.