OpenNetworkConnection ohne programmstop

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

Beitrag von NicTheQuick »

Bei 'Procedure Test(b.b, w.w, l.l, q.q)' werden insgesamt nicht 15 Bytes
übergeben, sondern 20 Bytes (4 + 4 + 4 + 2*4). Für jeden Parameter also
32 Bit, außer bei dem Quad, das ja 64 Bit beansprucht.

Deswegen glaube ich, dass bei einem 64-Bit-PureBasic dann insgesamt 32
Bytes übergeben werden (8 + 8 + 8 + 8). Ein Pointer würde ab dann auch 8
Bytes belegen.
Außerdem würden ab dieser Zeit so einige Codes nicht mehr funktionieren,
weil viele Leute z.B. 'Buffer.l = AllocateMemory(Size)' schreiben und nicht
etwa '*Buffer = ...'. Der zurückgegebene Zeiger von 'AllocateMemory()'
würde dann auf 32 Bit getrimmt und somit falsch sein.

///Edit:
siehe HeX0Rs Post. <)
Zuletzt geändert von NicTheQuick am 06.09.2007 17:57, insgesamt 1-mal geändert.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

gut das ich immer *mem benutze :)
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

NicTheQuick hat geschrieben:Bei 'Procedure Test(b.b, w.w, l.l, q.l)' werden insgesamt nicht 15 Bytes
übergeben, sondern 20 Bytes (4 + 4 + 4 + 2*4). Für jeden Parameter also
32 Bit, außer bei dem Quad, das ja 64 Bit beansprucht.
Nur weil deine Variable sich als Quad tarnt ist sie noch lange keins :lol: .
Also nur 16 Bytes.
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

Beitrag von NicTheQuick »

@HeX0R:
:lol:
Hab's gleich korrigiert!
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

HeX0R hat geschrieben:
NicTheQuick hat geschrieben:Bei 'Procedure Test(b.b, w.w, l.l, q.l)' werden insgesamt nicht 15 Bytes
übergeben, sondern 20 Bytes (4 + 4 + 4 + 2*4). Für jeden Parameter also
32 Bit, außer bei dem Quad, das ja 64 Bit beansprucht.
Nur weil deine Variable sich als Quad tarnt ist sie noch lange keins :lol: .
Also nur 16 Bytes.
NicTheQuick hat recht. Quad wird ByVal übergeben. Siehe ASM - Output.

FF :mrgreen:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
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

Beitrag von NicTheQuick »

@mk-soft:
HeX0R hat nichts anderes gemeint. Ich hab lediglich einen Typo gehabt. Ich
hab 'q.l' statt 'q.q' geschrieben.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

mk-soft hat geschrieben:
NicTheQuick hat recht. Quad wird ByVal übergeben. Siehe ASM - Output.

FF :mrgreen:
Wer zuletzt lacht :mrgreen: :mrgreen:
Hatte es ja auch absichtlich nicht fett dargestellt
Antworten