Datentypen von (PB-)Funktionsrückgaben / EnableExplizit

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
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

Beitrag von pcfreak1201 »

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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit

Beitrag von RSBasic »

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:

Code: Alles auswählen

EnableExplicit

Define WordLength

WordLength = Len("Hallo")

Debug WordLength
In der Hilfe steht:
Laenge = Len(String$)
Die Länge wird als Ganzzahl zurückgegeben.

Bei "Mid()" kannst du sehen, dass stattdessen ein String zurückgegeben wird:
Ergebnis$ = Mid(String$, StartPosition [, Länge])
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
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

Beitrag von pcfreak1201 »

Hallo!

Danke, aber "so einfach" ist es dann doch nicht :D

Es ist mir zuletzt z.B. bei

Code: Alles auswählen

Ergebnis = GetFileDate(Dateiname$, DatumsTyp)
aufgefallen. Ich hätte jetzt bei anderen Sprachen/Dialekten einen Double-Wert erwartet. In der Hilfe steht:
Gibt das gewünschte Datum im Format der PureBasic Date Bibliothek zurück.
Und dort steht dann:
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.
... kein Wort von dem verwendeten Datentyp.
Benutzeravatar
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

Beitrag von NicTheQuick »

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).
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit

Beitrag von PMV »

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. :wink:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
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

Beitrag von pcfreak1201 »

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! :allright:

Stefan
Benutzeravatar
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

Beitrag von ts-soft »

Für Pointer sollte man Pointer verwenden, das passt dann immer :wink: ,
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.
Bild
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit

Beitrag von H.Brill »

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 :

Code: Alles auswählen

Debug FormatDate("%dd.%mm.%yyyy", GetFileDate(Datei$, #PB_Date_Created))
PB 6.10
Benutzeravatar
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

Beitrag von pcfreak1201 »

Hallo!
Ich habe gerade noch einen nicht dokumentierten "Problemfall" gefunden:

Code: Alles auswählen

NewList lstFolders.s()
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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Datentypen von (PB-)Funktionsrückgaben / EnableExplizit

Beitrag von RSBasic »

Schau in der PB-Hilfe z.B. unter "MapKey()". Da gibt es ein Beispielcode.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten