Aktuelle Zeit: 21.10.2018 11:13

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Parameterübergabe an Prozeduren
BeitragVerfasst: 25.09.2017 07:28 
Offline
Benutzeravatar

Registriert: 19.05.2012 17:09
Zitat:
Ich würde es ja gleich mit einer großen Struktur machen. Es sei denn, dass ist nicht so gedacht.

Doch, es war genauso gedacht. Ich wollte nur vorab an einem einfachen Beispiel die Parameterübergabe mit Referenz verstehen.
Im Übrigen ist die Struktur eine feine Sache: Es bleibt zusammen, was zusammengehört.

_________________
Windows10 / PB5.60 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Parameterübergabe an Prozeduren
BeitragVerfasst: 25.09.2017 09:20 
Offline

Registriert: 29.08.2004 13:18
man-in-black hat geschrieben:
Code:
Define x.i,y.s,z.i

Procedure test(*a,*b,*c)
  PokeI(*a,15)
  PokeS(*b,"Teststring")
  PokeI(*c,19)
EndProcedure



Um himmels willen, nicht einfach irgendwohin was "Poke"n - schon gar nicht strings. Strings haben eine größe. Wenn der Ursprungsstring bei *B kleiner ist als das was du "poke"st, dann schreibst du wild in Speicher rum! Selbst bei "*b.string" hätte ich bauchschmerzen beim Schreiben. Die beste Lösung ist imo die von NIC. Es ist auch weniger Fehleranfälliger (vergessen von @ oder feste werte Test(10,30,40) - erzeugt einen ausführbaren Code in Beispiel oben)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Parameterübergabe an Prozeduren
BeitragVerfasst: 25.09.2017 14:45 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Zitat:
Selbst bei "*b.string" hätte ich bauchschmerzen beim Schreiben.

Brauchste aber nicht, hier wirkt der Stringmanager von PB!

Aber beim Code von man-in-black haste natürlich recht. Kann man auch selber testen, einfach mal den Purefier anschalten. Pokes
in nicht allocierten Speicher sind immer gefährlich :mrgreen:

_________________
PureBasic 5.70 | SpiderBasic 2.10 | Windows 10 Pro (x64) | Linux Mint 19.0 (x64)
"Ich möchte gerne die Welt verändern, doch Gott gibt den Quellcode nicht frei."
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Parameterübergabe an Prozeduren
BeitragVerfasst: 25.09.2017 17:29 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Wie Demivec geschrieben hat muss ein String ByRef immer ein Strukturtype sein (*Text.String). Anders führt es sonst zum Speicherleck.

oder wie bei API
Code:
Procedure foo(*text, len)
  Protected sTemp.s
 
  sTemp = "Hello World!"
  PokeS(*text, sTemp, Len)
 
EndProcedure

len = 6
t1.s = Space(len)
foo(@t1, len)
Debug t1

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Parameterübergabe an Prozeduren
BeitragVerfasst: 25.09.2017 19:20 
Offline
Benutzeravatar

Registriert: 21.08.2006 17:39
Zitat:
Aber beim Code von man-in-black haste natürlich recht. Kann man auch selber testen, einfach mal den Purefier anschalten. Pokes
in nicht allocierten Speicher sind immer gefährlich

Ging auch nur um die Logik dahinter. Aber ja, vielleicht sollte ich aufpassen, was ich schreibe :D

MFG
MIB

_________________
(hab alles, kann alles, weiß alles!!^^)

Bild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ]  Gehe zu Seite Vorherige  1, 2

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