Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
- pcfreak1201
- Beiträge: 38
- Registriert: 17.12.2011 13:01
- Computerausstattung: Linux Mint 17.3 (Rosa) x64 | PB 5.42LTS x64 (Linux+Win)
- Wohnort: Arnsberg
Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
Hallo!
Ich habe noch nicht viel in PureBasic programmiert, komme aber von anderen Dialekten (VB6, RealBasic).
Dabei verwende ich mittlerweile aus Prinzip "EnableExplizit" und habe immer wieder Schwierigkeiten den
korrekten Variablentyp für die Definition zu finden.
In anderen Sprachen steht der Typ in der Hilfe, doch bei PB finde ich meist nur Beschreibungen, aber keinen Typ.
Bisher probiere ich wie bei VB6 und API-Aufrufen, einfach "long" aus - ohne zu wissen, was passiert, wenn der Typ nicht passt.
(x64 verwende ich noch nicht, sehe da aber noch so manche Probleme auf mich zukommen)
Gibt es irgendwo eine verlässliche Quelle?
Danke,
Stefan
Ich habe noch nicht viel in PureBasic programmiert, komme aber von anderen Dialekten (VB6, RealBasic).
Dabei verwende ich mittlerweile aus Prinzip "EnableExplizit" und habe immer wieder Schwierigkeiten den
korrekten Variablentyp für die Definition zu finden.
In anderen Sprachen steht der Typ in der Hilfe, doch bei PB finde ich meist nur Beschreibungen, aber keinen Typ.
Bisher probiere ich wie bei VB6 und API-Aufrufen, einfach "long" aus - ohne zu wissen, was passiert, wenn der Typ nicht passt.
(x64 verwende ich noch nicht, sehe da aber noch so manche Probleme auf mich zukommen)
Gibt es irgendwo eine verlässliche Quelle?
Danke,
Stefan
Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
Herzlich Willkommen im Forum, pcfreak1201.
Informationen zu den Variablentypen findest du in der PB-Hilfe unter "Variablen, Typen und Operatoren".
Rückgabewerte von PB-Funktionen sind auch in der PB-Hilfe beschrieben. Das kann z.B. Ganzzahl sein oder String.
Beispiel für die Verwendung eines Befehls mit einem Rückgabewert:
In der Hilfe steht:
Bei "Mid()" kannst du sehen, dass stattdessen ein String zurückgegeben wird:
Informationen zu den Variablentypen findest du in der PB-Hilfe unter "Variablen, Typen und Operatoren".
Rückgabewerte von PB-Funktionen sind auch in der PB-Hilfe beschrieben. Das kann z.B. Ganzzahl sein oder String.
Beispiel für die Verwendung eines Befehls mit einem Rückgabewert:
Code: Alles auswählen
EnableExplicit
Define WordLength
WordLength = Len("Hallo")
Debug WordLength
Die Länge wird als Ganzzahl zurückgegeben.Laenge = Len(String$)
Bei "Mid()" kannst du sehen, dass stattdessen ein String zurückgegeben wird:
Ergebnis$ = Mid(String$, StartPosition [, Länge])
- pcfreak1201
- Beiträge: 38
- Registriert: 17.12.2011 13:01
- Computerausstattung: Linux Mint 17.3 (Rosa) x64 | PB 5.42LTS x64 (Linux+Win)
- Wohnort: Arnsberg
Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
Hallo!
Danke, aber "so einfach" ist es dann doch nicht
Es ist mir zuletzt z.B. bei
aufgefallen. Ich hätte jetzt bei anderen Sprachen/Dialekten einen Double-Wert erwartet. In der Hilfe steht:
Danke, aber "so einfach" ist es dann doch nicht

Es ist mir zuletzt z.B. bei
Code: Alles auswählen
Ergebnis = GetFileDate(Dateiname$, DatumsTyp)
Und dort steht dann:Gibt das gewünschte Datum im Format der PureBasic Date Bibliothek zurück.
... kein Wort von dem verwendeten Datentyp.Die 'Date' (Datums) Bibliothek ermöglicht den Umgang mit Datums- und Zeitangaben zwischen 1970 und 2038. Benutzt wird dabei die Unix-Methode (d.h. die Anzahl der seit dem 1. Januar 1970 vergangenen Sekunden).
Hinweis: Unterstützte Datums-/Zeit-Werte sind 01.01.1970, 00:00:00 als Minimum und 19.01.2038, 03:14:07 als Maximum.
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
Hi pcfreak1201,
die PB-Hilfe hält sich da in der Tat etwas zurück bei der Sache mit den Datentypen. Da ich auch ein Freund von sauber getypter Programmierung bin, finde ich das auch sehr schade. Eine Ganzzahl kann auch alles mögliche sein. Am sichersten fährt man für Ganzzahlen natürlich mit Integer, aber leider gibt es z.B. auch kein unsigned Integer.
In deinem Beispiel mit der Date-Library findest du die Antwort nur versteckt. Mit der "Unix-Methode" ist der Unix Time Stamp gemeint, der üblicherweise in einer 32-Bit vorzeichenbehafteten Ganzzahl gespeichert wird. Bei PB entspricht das also dem Datentyp Long (.l).
die PB-Hilfe hält sich da in der Tat etwas zurück bei der Sache mit den Datentypen. Da ich auch ein Freund von sauber getypter Programmierung bin, finde ich das auch sehr schade. Eine Ganzzahl kann auch alles mögliche sein. Am sichersten fährt man für Ganzzahlen natürlich mit Integer, aber leider gibt es z.B. auch kein unsigned Integer.
In deinem Beispiel mit der Date-Library findest du die Antwort nur versteckt. Mit der "Unix-Methode" ist der Unix Time Stamp gemeint, der üblicherweise in einer 32-Bit vorzeichenbehafteten Ganzzahl gespeichert wird. Bei PB entspricht das also dem Datentyp Long (.l).
Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
Ist kein Datentyp angegeben, solte der Datentyp der Defaultdatentyp
sein, was seit einigen Versionen Integer (.i) entspricht. Ist das nicht
der Fall, so ist das ein Fehler in der Hilfe und sollte umgehend entsprechend
gemeldet werden.
MFG PMV
sein, was seit einigen Versionen Integer (.i) entspricht. Ist das nicht
der Fall, so ist das ein Fehler in der Hilfe und sollte umgehend entsprechend
gemeldet werden.

MFG PMV
- pcfreak1201
- Beiträge: 38
- Registriert: 17.12.2011 13:01
- Computerausstattung: Linux Mint 17.3 (Rosa) x64 | PB 5.42LTS x64 (Linux+Win)
- Wohnort: Arnsberg
Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
Ahh!
Mit Integer habe ich dann auch den Unterschied x86/x64 berücksichtigt.
D.h. auch, daß es ausreicht wenn "genug Platz" im Datentyp vorhanden ist?!
(Also z.B. bei einem Wert von nur einem Byte Integer mit 4 bzw. 8 bytes verwenden ist OK?)
Ich frage wegen evtl. Pointern und dem möglichen Problem Little/Big Endian?
Aber sonst werde ich PMVs Tip beherzigen. Da macht die Sache dann tatsächlich einfacher.
Danke!
Stefan
Mit Integer habe ich dann auch den Unterschied x86/x64 berücksichtigt.
D.h. auch, daß es ausreicht wenn "genug Platz" im Datentyp vorhanden ist?!
(Also z.B. bei einem Wert von nur einem Byte Integer mit 4 bzw. 8 bytes verwenden ist OK?)
Ich frage wegen evtl. Pointern und dem möglichen Problem Little/Big Endian?
Aber sonst werde ich PMVs Tip beherzigen. Da macht die Sache dann tatsächlich einfacher.
Danke!

Stefan
- 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: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
Für Pointer sollte man Pointer verwenden, das passt dann immer
,
ansonsten passen Pointer immer in Integer.
Bei Ganzzahlvariablen ist immer dem Integer vorzug zu geben, es sei denn ein anderer Typ wird
unbedingt benötigt. Dies gilt auch für die Rückgabe von Proceduren. Procedure.b nutzen weil
nur #True oder #False zurückgegeben wird ist nicht unbedingt sinnvoll.
Die anderen Ganzzahltypen sind meist nur in Strukturen, Interfaces und bei Speichermanipulation
sinnvoll (ausnahme das Quad, welches natürlich auch oftmals wegen des Zahlenbereichs benötigt wird).
Gruß
Thomas

ansonsten passen Pointer immer in Integer.
Bei Ganzzahlvariablen ist immer dem Integer vorzug zu geben, es sei denn ein anderer Typ wird
unbedingt benötigt. Dies gilt auch für die Rückgabe von Proceduren. Procedure.b nutzen weil
nur #True oder #False zurückgegeben wird ist nicht unbedingt sinnvoll.
Die anderen Ganzzahltypen sind meist nur in Strukturen, Interfaces und bei Speichermanipulation
sinnvoll (ausnahme das Quad, welches natürlich auch oftmals wegen des Zahlenbereichs benötigt wird).
Gruß
Thomas
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.

Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
In der Tat ist es bei den Datumsfunktionen
zusammen mit der File-Library auf den ersten
Blick nicht direkt ersichtlich. Hatte da auch
etwas länger gebraucht, um das Gewünschte
zu bekommen.
So bekommt man jedenfalls das Erstellungsdatum einer
Datei mit Punkten getrennt :
zusammen mit der File-Library auf den ersten
Blick nicht direkt ersichtlich. Hatte da auch
etwas länger gebraucht, um das Gewünschte
zu bekommen.
So bekommt man jedenfalls das Erstellungsdatum einer
Datei mit Punkten getrennt :
Code: Alles auswählen
Debug FormatDate("%dd.%mm.%yyyy", GetFileDate(Datei$, #PB_Date_Created))
PB 6.10
- pcfreak1201
- Beiträge: 38
- Registriert: 17.12.2011 13:01
- Computerausstattung: Linux Mint 17.3 (Rosa) x64 | PB 5.42LTS x64 (Linux+Win)
- Wohnort: Arnsberg
Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
Hallo!
Ich habe gerade noch einen nicht dokumentierten "Problemfall" gefunden:
Wie definiere ich denn eine Liste - und auch wenn ich sie nicht brauche - eine Map?
Define, Dim und Pointer funktionieren schon mal nicht
Grüße und einen guten Rutsch,
Stefan
Ich habe gerade noch einen nicht dokumentierten "Problemfall" gefunden:
Code: Alles auswählen
NewList lstFolders.s()
Define, Dim und Pointer funktionieren schon mal nicht

Grüße und einen guten Rutsch,
Stefan
Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit
Schau in der PB-Hilfe z.B. unter "MapKey()". Da gibt es ein Beispielcode.