Structure als Prozedurparameter

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

Structure als Prozedurparameter

Beitrag von ProgOldie »

Sorry, wenn ich das Thema noch einmal aufgreife, aber ich kapier die Anwendung einfach nicht.

Code: Alles auswählen

Structure webcam
  Name.s       ; The description of Webcam
  URL.s       ; URL of webcam
  country.s   ; country where webcam stands
  position.s  ; city or location of webcam
  lastModify.s;Datum der letzten Aktualisierung
EndStructure
 
Dim cam.webcam(10)
cam(1)\Name = "Krankenhaus Bahlingen"
cam(1)\URL = "http://webcam.zollernalbkreis.de/kkhbl1.jpg"
Nun will ich z.B. die Structure cam(1) an eine Prozedur showWebcam() übergeben, wo auf alle Daten der Structure zugegriffen werden soll.
Dazu definiere ich mir eine Variable act_cam vom Typ webcam.

Code: Alles auswählen

Define act_cam.webcam
*act_cam=@cam(1)
Das klappt schon einmal nicht.
Wenn act_cam richtig cam(1) zugewiesen wäre, wie lautet dann der Prozedurkopf?

Code: Alles auswählen

procedure showWebcam( ????)
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
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: Structure als Prozedurparameter

Beitrag von ts-soft »

Code: Alles auswählen

EnableExplicit

Structure webcam
  Name.s       ; The description of Webcam
  URL.s       ; URL of webcam
  country.s   ; country where webcam stands
  position.s  ; city or location of webcam
  lastModify.s;Datum der letzten Aktualisierung
EndStructure

Procedure ShowWebcam(Array act_cam.webcam(1)); 1 steht für eine Dimension!
  Debug act_cam(1)\Name
  Debug act_cam(1)\URL
  Debug act_cam(2)\Name
  Debug act_cam(2)\URL
EndProcedure

Dim cam.webcam(10)
cam(1)\Name = "Krankenhaus Bahlingen"
cam(1)\URL = "http://webcam.zollernalbkreis.de/kkhbl1.jpg"
cam(2)\Name = "Krankenhaus Barmbek"
cam(2)\URL = "http://webcam.hamburg-barmbek.de"

ShowWebcam(cam.webcam())
Und wenn nur eine Camera übergeben werden soll:

Code: Alles auswählen

EnableExplicit

Structure webcam
  Name.s       ; The description of Webcam
  URL.s       ; URL of webcam
  country.s   ; country where webcam stands
  position.s  ; city or location of webcam
  lastModify.s;Datum der letzten Aktualisierung
EndStructure

Procedure ShowWebcam(*act_cam.webcam); 1 steht für Camera 1!
  Debug *act_cam\Name
  Debug *act_cam\URL
EndProcedure

Dim cam.webcam(10)
cam(1)\Name = "Krankenhaus Bahlingen"
cam(1)\URL = "http://webcam.zollernalbkreis.de/kkhbl1.jpg"

ShowWebcam(@cam.webcam(1))
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
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

Re: Structure als Prozedurparameter

Beitrag von ProgOldie »

Hab' die zweite Version mit einer übergebenen Camera genommen. Klappt prima!
Danke
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
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: Structure als Prozedurparameter

Beitrag von ts-soft »

Du hattest ja bei:

Code: Alles auswählen

Define act_cam.webcam
*act_cam=@cam(1)
nur das * vergessen:

Code: Alles auswählen

Define *act_cam.webcam
*act_cam=@cam(1)
und das wäre eigentlich bei EnableExplicit aufgefallen :wink:

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
Antworten