Aktuelle Zeit: 11.12.2017 20:43

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Unsigned-Problematik beim Einbinden einer C++-Lib
BeitragVerfasst: 12.08.2017 04:06 
Offline
Benutzeravatar

Registriert: 15.03.2007 21:47
Moin,
ich bin derzeit dabei, eine in C++ geschriebene Bibliothek als DLL in PureBasc zu benutzen. Die Funktionen der Bibliothek weisen aber zahlreiche unsigned Datentypen auf (unsigned long, int, ...) - sowohl bei Parametern als auch bei Rückgabewerten.

Wie geht man damit in PureBasic korrekt um?

_________________
Kostenfreier Setup Creator | RCon Tool für DayZ

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Unsigned-Problematik beim Einbinden einer C++-Lib
BeitragVerfasst: 12.08.2017 08:31 
Offline

Registriert: 29.08.2004 13:18
Mit Unicode und ASCII gibts ja zwei Vorzeichenlose Variablentypen. Leider hat man es versäumt, gleich für Long und Quad entsprechende einzurichten.

Für LONG kann man einfach in den nächsten größeren Datenbereich ausweichen. PB schmeißt ja keine Fehlermeldungen, wenn es einen Überlauf gibt, das kann man hier ausnutzen:
Code:
Procedure Scan(*adr)
  Debug "scan:"+PeekA(*adr)+" "+PeekA(*adr+1)+" "+PeekA(*adr+2)+" "+PeekA(*adr+3)
EndProcedure 
 
quad.q=$ef1f2f3f

scan(@quad)

long.l=quad
Debug long
scan(@long)

newquad.q=long & $ffffffff

Debug Hex(newquad)
scan(@newquad)


Wenn du keine Multiplikation, Division oder größenvergleiche benutzt, hast du auch keine Probleme
Code:
long.l=$7fffffff
For i=1 To 10
  Debug "S:"+long+" U:"+Str(long & $ffffffff)
  long+1
Next

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Unsigned-Problematik beim Einbinden einer C++-Lib
BeitragVerfasst: 12.08.2017 22:41 
Offline
Benutzeravatar

Registriert: 15.03.2007 21:47
Moin,
danke erst mal für die Info. Das war auch meine erste Annahme, wobei mein Header in PureBasic dadurch unsauber wird.

Ein weiteres Problem: was mache ich aus einem unsigned __int64?
Das ist dann wohl in PureBasic nicht darzustellen. :(

_________________
Kostenfreier Setup Creator | RCon Tool für DayZ

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Unsigned-Problematik beim Einbinden einer C++-Lib
BeitragVerfasst: 12.08.2017 22:43 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Darstellen geht schon, nur damit rechnen ist schwieriger. Plus, Minus ist alles kein Problem. Zum Multiplizieren, Dividieren und Modulo brauchst du dann vermutlich Inline-Assembler.
Code:
q.q = -1
Debug StrU(q, #PB_Quad)

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Tevo Tarantula 3D-Drucker von Gearbest (Aufbau und Review)
Ubuntu Gnome 16.04.3 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye