Prototype hat gewisse Ähnlichkeit mit Interface oder auch mit Strukturen.
Durch den Prototype wird also eine passende Speichergrösse an die Funktion
übergeben. By CallFunction werden ja immer nur Integer bzw. Pointer übergeben,
was dann Problematisch bei Quad usw. wird. Auch die Übergabe von Strings ist
so nicht sehr sicher.
Ausserdem kann der Compiler auch die Anzahl und Art der Parameter überpüfen
und somit auch auf Fehler reagieren, was ohne Prototypes garnicht möglich wäre.
Das Prototypes ähnlichkeit mit Interface und Strukturen hat, merkt man auch daran,
das man keine Namen, die Bereits als Interface oder Strukturname vergeben sind
nutzen kann. Variablennamen spielen dabei keine Rolle.
Trotz allem finde ich ein Tutorial für Prototypes sollte eigentlich überflüssig sein.
Wer versucht das ganze zu Verstehen, wird das auch problemlos schaffen.
Gruß
Thomas
Pointer auf Procedure
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Pointer auf Procedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Re: Pointer auf Procedure
Ja, das ist der Nachteil von Prototype. Es ist recht schwer alte Pfade zu verlassen.STARGÅTE hat geschrieben:Obwohl die ersten Zeilen aus Diagramm zimlich ungewohnt sind.
Und man kann natürlich mein Beispiel auch auf die klassische Art lösen, indem man einen Zeiger aufs Feld übergibt.
Der Vorteil sind aber wirklich unabhängige Includes oder Dlls
Ein anderes Beispiel wäre eine Eingaberoutine, die von verschiedenen Programmen mehrfach aufgerufen wird und in einer Include steckt. Diese Eingaberoutine ruft eine externe Prozedur auf um auf #true oder #false zu testen. Diese KontrollProzeduren können dann sehr speziell auf das Hauptprogramm zugeschnitten sein.
z.B.
Eingabe(@Iszahl())
Eingabe(@IsChar())
Eingabe(@IsEingabeeineBLZ())
Eingabe(@IsEingabeeineStadtinDeutschland()) usw.
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Re: Pointer auf Procedure
Interresant werden Prototypen wenn man in eine Procedure verschieden Unterproceduren übergeben kann.
Ein einfaches Beispiel
FF 
Ein einfaches Beispiel
Code: Alles auswählen
Prototype Check(value1.i, value2.i)
Procedure CheckGT(value1.i, value2.i)
If value1 > value2
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure CheckLT(value1.i, value2.i)
If value1 < value2
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure MyCheck(value1.i, value2.i, proc.check)
Protected result
result = proc(value1, value2)
ProcedureReturn result
EndProcedure
Debug MyCheck(10, 20, @CheckGT())
Debug MyCheck(10, 20, @CheckLT())
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Re: Pointer auf Procedure
ein sehr schönes Beispiel 
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Re: Pointer auf Procedure
Danke auch für die Prototype Beispiele. Ich denke, ich werde Prototype verwenden.
Gruesse,
Animal
Gruesse,
Animal
PureBasic 4.50 beta2 (Mac OS X - Intel)
Rechner: iMac (24", Dual Core Intel, 3GB RAM, 300 GB HD, DVD) mit Mac OS X Intel 10.5.8 (Leopard)
Rechner: iMac (24", Dual Core Intel, 3GB RAM, 300 GB HD, DVD) mit Mac OS X Intel 10.5.8 (Leopard)