Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Übergabe mehrerer Parameter an eine Property

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 774
Wohnort: Ruhrpott

BeitragVerfasst am: 05.09.2017, 09:30    Titel: Übergabe mehrerer Parameter an eine Property Antworten mit Zitat

Hallo allerseits!

Beim Herumprobieren mit UDTs bin ich auf ein undokumentiertes Feature von FB gestoßen: Die Möglichkeit, mehr als einen Parameter an eine Property zu übergeben. So kann ein Wert z.B. nicht nur gesetzt, sondern auch gleichzeitig in eine Log- oder .ini - Datei geschrieben werden, deren Name als 2. Parameter übergeben wird:
Code:
Type tTest
   As Integer value
   Declare Property write(v As Integer) '<<<<< MUSS deklariert werden, auch wenn es keinen Code dazu gibt
   Declare Property write(v As Integer, file As String)
   Declare Property readValue As Integer
End Type

Property tTest.write(v As Integer, file As String)
   value = v
   Dim As Integer ff = FreeFile
   Open ExePath + "/" + file For Append As #ff
   Print #ff, v
   Close #ff
End Property

Property tTest.readValue As Integer
   Return value
End Property

Dim As tTest test
Dim As Integer x

With test
   .write = (15, "logfile1.txt")
   Print .readValue
   .write = (20, "logfile1.txt")
   Print .readValue
   .write = (25, "logfile1.txt")
   Print .readValue
   .write = (500, "logfile2.txt")
   Print .readValue
   .write = (301, "logfile2.txt")
   Print .readValue
End With

Print
Print "logfile 1:"
Open ExePath + "/logfile1.txt" For Input As #1
Do
   Input #1, x
   Print x
Loop Until Eof(1)
Close 1

Print
Print "logfile 2:"
Open ExePath + "/logfile2.txt" For Input As #1
Do
   Input #1, x
   Print x
Loop Until Eof(1)
Close 1

Sleep

Ich finde, das wäre einer Erwähnung in der Befehlsreferenz wert.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4148
Wohnort: ~/

BeitragVerfasst am: 05.09.2017, 23:28    Titel: Antworten mit Zitat

Hmm, ich bin mir nicht ganz sicher, ob du da nicht ein dokumentiertes Feature zweckentfremdest. grinsen Die Version mit den zwei Parametern ist eigentlich dazu gedacht, um einen Index anzusprechen.
Befehlsreferenz hat Folgendes geschrieben:
'Index' wird z. B. verwendet, wenn der über die Property geänderte Record ein Array ist. Über diesen Parameter kann der Index des Feldelements angegeben werden. Es ist auch möglich, hier andere Parameter zu übergeben, z. B. einen Pointer auf eine ganze Struktur von Parametern.

Allerdings, ein Anwendungsbeispiel dazu haben wir in der deutschsprachigen Referenz noch nicht
(vgl https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgProperty, letztes Beispiel).
_________________
Meine Großeltern waren als junge Menschen sehr modern - sie hatten schon damals in der Badewanne Email.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 774
Wohnort: Ruhrpott

BeitragVerfasst am: 06.09.2017, 07:10    Titel: Antworten mit Zitat

Upps, da war ich in meinem Enthusiasmus wohl etwas voreilig. peinlich

Denn
1. ist die Übergabe von zwei Parametern tatsächlich dokumentiert (jaja, ich weiß: Wer lesen kann, ist klar im Vorteil grinsen ) und
2. gibt der Compiler -wie ich inzwischen festgestellt habe- bei mehr als 2 Parametern eine Fehlermeldung aus.

Aber bei Bedarf kann man ja einen passenden UDT als Parametercontainer erstellen und den dann übergeben.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz