Variablen-STRUCT in ACTION!

Moderator: Rockford

Antworten
Benutzeravatar
MichaG
Beiträge: 385
Registriert: 14.10.2021 12:54
Has thanked: 393 times
Been thanked: 113 times
Kontaktdaten:

Variablen-STRUCT in ACTION!

Beitrag von MichaG »

Hallo liebe ACTION!-Profis,

ich habe NIO.ACT (Routinen für FujiNet) um die Prozedur "fstatus" erweitert, dort werden 139 Bytes mit diversen Status-Werten zurückgeliefert. Thom hat das auch schon in die offizielle Version übernommen.

Z.B. die interne IP gebe ich dann so aus:

Code: Alles auswählen

BYTE ARRAY stbuf(139)

PROC status()
	fstatus(stbuf)

	Print("My IP:")
	PrintB(stbuf(97))
	Print(".")
	PrintB(stbuf(98))
	Print(".")
	PrintB(stbuf(99))
	Print(".")
	PrintB(stbuf(100))
	printE("")
RETURN
Was auch funktionert.

Nun finde ich das Hantieren mit den Indizes unschön.

Mit meinem Verständis der Speicherbelegung von ACTION!-Variablen habe ich das nun so gelöst, dass ich den Buffer auf mehrere kleine hintereinander definierte Array aufgeteit habe.

Code: Alles auswählen

BYTE ARRAY ssid(33)
BYTE ARRAY host(64)
BYTE ARRAY intIp(4)
BYTE ARRAY gateway(4)
BYTE ARRAY netmask(4)
BYTE ARRAY dnsIP(4)
BYTE ARRAY macAdr(6)
BYTE ARRAY bssid(6)
BYTE ARRAY fn_version(15)

PROC status()
	fstatus(ssid)
	Print("SSID:    ") PrintST(ssid,0,33)
	Print("Hostname:") PrintST(host,0,64)

	Print("Int.IP:  ") PrintIP(intIP,4)
	Print("Gateway: ") PrintIP(gateway,4)
	Print("Netmask: ") PrintIP(netmask,4)
	Print("DNS IP:  ") PrintIP(dnsIP,4)
	Print("MacAddr.:") PrintIP(macAdr,6)
	Print("BSSID:   ") PrintIP(bssid,6)
	Print("FujiNet: ") PrintST(fn_version,0,15)
RETURN
Das funktioniert auch:
20221017_202518.jpg
Meine Frage nun, ist das eine "legale" Lösung oder geht es hier nur, weil es ein kleines, überschaubares Programm ist?
ABBUC-Mitglied aus den 90ern/frühen 2000ern
Ex-WAF und Regionalgruppe Thüringen

Benutzeravatar
cas
Beiträge: 862
Registriert: 18.06.2021 21:01
Wohnort: Solar System
Has thanked: 197 times
Been thanked: 405 times
Kontaktdaten:

Re: Variablen-STRUCT in ACTION!

Beitrag von cas »

Es funktioniert so, aber ein RECORD waere die bessere Wahl -> siehe Kapitel 8.3 Records in
https://www.atariwiki.org/wiki/attach/A ... L_2018.pdf

Benutzeravatar
MichaG
Beiträge: 385
Registriert: 14.10.2021 12:54
Has thanked: 393 times
Been thanked: 113 times
Kontaktdaten:

Re: Variablen-STRUCT in ACTION!

Beitrag von MichaG »

Ja, daran hatte ich auch schon gedacht, aber für TYPE gehen ja nur einfache Variablen, keine Arrays/Strings.

Und mit Pointern wollte ich nicht rumhantieren, da war mir dieser Weg einfacher.

Danke für deine Antwort.
ABBUC-Mitglied aus den 90ern/frühen 2000ern
Ex-WAF und Regionalgruppe Thüringen

Benutzeravatar
cas
Beiträge: 862
Registriert: 18.06.2021 21:01
Wohnort: Solar System
Has thanked: 197 times
Been thanked: 405 times
Kontaktdaten:

Re: Variablen-STRUCT in ACTION!

Beitrag von cas »

Hi,

Du kannst auch mal versuchen ob diese Deklarationen funktionieren:

Code: Alles auswählen

BYTE ARRAY stbuf(139),
           stbuf.ssid(33)=@stbuf,
           stbuf.host(64)=@stbuf.ssid+33,
           stbuf.intIp(4)=@stbuf.host+64,
           ...

Also verschiednen Variablen im Speicher ueberlappend zu definieren.

Benutzeravatar
MichaG
Beiträge: 385
Registriert: 14.10.2021 12:54
Has thanked: 393 times
Been thanked: 113 times
Kontaktdaten:

Re: Variablen-STRUCT in ACTION!

Beitrag von MichaG »

Leider nein, das bringt Fehler 6. Schade, sah cool aus :D
ABBUC-Mitglied aus den 90ern/frühen 2000ern
Ex-WAF und Regionalgruppe Thüringen

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast