|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 22.01.2014, 09:36 Titel: |
|
|
Zitat: | wenn ich mir z.B. dStart und dEnde ausgeben lasse bekomme ich immer eine 1 wenn ich es beim Functions Aufruf nicht mit angegeben habe zurück? | Wenn du das Array mit Code: | Dim daten(1 To 1) As Single | dimensionierst, bekommst du natürlich (und korrekterweise) zwei Einsen zurückgemeldet.
Zitat: | was ich auch noch verstanden habe und auch nichts zu gefunden habe bis jett traurig ist warum muss ich das Array daten() eigendlich extra noch mal Definiren zu begin? | Du mußt der Function mitteilen, welche Art von Daten du ihr übergibst und unter welchem Namen sie diese innerhalb der Function ansprechen muß. Ich weiß nicht, ob ich dich richtig verstanden habe, aber ich nehme an daß du Verständnisschwierigkeiten bezüglich der Parameterübergabe hast.
Ein Array in der Parameterliste einer Function wird immer ByRef übergeben, d.h., die Function bekommt nicht die Werte selbst übergeben, sondern nur deren Speicheradresse und greift daher immer auf das echte Array außerhalb der Function zu, so, als ob du es global (also Shared) dimensioniert hättest. Wenn das Array global dimensioniert wäre, bräuchtest du es nicht in der Parameterliste angeben, müsstest es dann aber innerhalb der Function mit seinem unter Dim festgelegten Namen ansprechen und könntest somit kein beliebiges anderes Array an die Function übergeben.
Zitat: | die Dritte lässt das Programm abstürzen | Ein Programmabsturz beim Zugriff auf ein Array deutet darauf hin, daß du einen Index außerhalb des definierten Bereichs aufgerufen hast.
Ansonsten kann ich deine Schwierigkeiten hier nicht nachvollziehen, ich habe alle deine geposteten Codes ausprobiert, bei mir läuft alles korrekt.
Hast du bei "KGroeste" wirklich beide Vergleichsoperatoren umgedreht?
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Zuletzt bearbeitet von grindstone am 23.01.2014, 07:58, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 22.01.2014, 11:37 Titel: |
|
|
eigentlich dachte ich das ich das mit dem DIM und den Übergabe von Parametern verstanden habe, doch ich wurde eines Besseren belehrt, sonst hätte ich nun nicht die Probleme. Kann es sein das QBasic da früher unter DOS nicht so Streng gewesen ist? was die Deklaration von Variablen etc. anbelangt?
Mit Dim Deklariere ich und weise den Variablen Array`s etc. Speicher zu!
ReDim besagt das es ein Variabler Speicher ist und Später vergrößert werden kann mit, mit Neuer Deklaration (ReDim).
Das Shared sollte man so wenig wie möglich benutzen sagte man mir, ich versuche Ohne aus zukommen)
Wenn ich eine Variable in einer SUB / Function benutze nur innerhalb der SUB / Function dann muss ich sie dort auch Deklarieren (DIM).
Wenn ich den Inhalt einer Variable in einer SUB / Function benötige muss ich es als Parameter übergeben, Variablen werden immer als BYREF übergeben (Werte kommen nicht aus der SUB / Function Array`s hingegen als ByVal wenn der Wert eines Array`s geändert wird ändert er sich auch außerhalb der SUB / Function. Soweit Klar.
Wenn man was anderes Möchte muss man das bei den Parametern Definieren also ByVal / BYREF vor das Parameter Schreiben.
Wenn ich eine Variable aus den Parametern erstelle wird sie dort auch Deklariert und muss nicht noch ein mal in der SUB / Function extra Deklariert werden.
Ich hoffe das ich das so richtig verstanden habe.
so jetzt zu meinem Problem, nachdem ich die Probleme mit dem KGroeser hatte ist mir auch aufgefallen das KKleiner nicht richtig arbeitet. kam nur nicht zum Tragen da ich immer nur den Kleinsten wert und nicht den zweit Kleinsten wert ausgelesen habe bis jetzt.
Mir ist klar das es extrem ungünstig ist das ich den Fehler nicht reproduzierbar darstellen kann, wobei da fehlt mir gerade ein: ich probiere mal was: JA ich kann den Fehler Reproduzieren
den Datensatz bei X_Werte habe ich gekürzt sind über 2.000 Werte
Hier kommt der Fehler:
Code: | Dim As Single Daten () '' Da ich keinen Plan habe was für eien Größe ich benötige mal nur das mindeste.
'' ###################### Module.bi ####################################
Declare FUNCTION KGroeste(daten() As Single,_
rangIndex As Integer,_
dStart As Integer = LBound(daten),_
dEnde As Integer = UBound(Daten))_
As Single
FUNCTION KGroeste(daten() As Single, rangIndex As Integer, dStart As Integer = LBound(daten), dEnde As Integer = UBound(Daten)) As Single
Dim As Integer sortInd(dStart To dEnde), i, j, q
Dim ret As Single
For i = dStart To dEnde
sortInd(i) = i
Next i
'' -->> Sortierung, aber nur Indexe, nicht Daten selber <<--
For i = dStart To dEnde-1
For j = i + 1 To dEnde
If daten(sortInd(j)) > daten(sortInd(i)) Then
Swap sortInd(i), sortInd(j) '' Nicht Daten selber, sondern nur Indexe tauschen
EndIf
Next j
Next i
If rangIndex = 1 Then
Return daten(sortInd(dStart)) '' kleinsten wert zurückgeben
EndIf
j = LBound(sortInd) '' anfangsindex für vergleichswert
q = 1 '' anfangswert für aktuellen rang
For i = LBound(sortInd) To UBound(sortInd) '' ganzes array durchgehen
If daten(sortInd(i)) < daten(sortInd(j)) Then '' größerer wert gefunden
q += 1 '' aktuellen rang erhöhen
If q = rangIndex Then '' prüfen, ob der gewünschte rang erreicht ist
Return daten(sortInd(i)) '' entsprechenden wert zurückgeben
EndIf
j = i '' aktuellen wert als nächsten vergleichswert setzen
EndIf
Next
Return ret '' kein passender rang gefunden
End Function
'' ###################### Module.bi ####################################
'' Daten aus Datei Lesen verarbeiten Zerteilen etc.
'' Ergebnis X_Werte()
Dim AS Single X_Werte(1 TO ...) = {0,-97.155,94.815,94.905,94.995,95.085,95.175,95.265,95.355,95.445,95.535}
Print "KGroeste(X_Werte(), 1) = "; KGroeste(X_Werte(), 1)
Sleep : End |
wenn ich nun hin gehe und das Array Daten größer mache als das was bei X_Werte ist dann klappt es ohne Fehlermeldung.
ich verstehe nur nicht warum ich das Array Daten überhaupt in meinem Hauptprogramm mit einer DIM Deklarieren muss, ich dachte das mache ich schon in der Function bei der Parameter Auflistung.
den Fehler kann ich auch umgehen in dem ich die Zeile:
Code: | Print "KGroeste(X_Werte(), 1) = "; KGroeste(X_Werte(), 1) |
mit dieser hier austausche
Code: | Print "KGroeste(X_Werte(), 1) = "; KGroeste(X_Werte(), 1, 1, 11) |
antat 1 und 11 habe ich bei mir das LBound und UBound genommen |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 22.01.2014, 14:14 Titel: |
|
|
Hallo,
also im grunde kann man sich das doch ganz einfach merken, ob Datenobjekte Ausserhalb einer Methode Deklariert werden muessen oder nicht. Als Beispiel beziehe ich mich jetzt mal auf dein Array daten().
Wenn du die Werte, die du in daten() Speicherst, nur in der Methode KGroeste(...) verwendest, dann braucht es nicht Ausserhalb Deklariert werden sondern nur innerhalb
der Methode selbst. Wenn du aber die Werte aus daten() noch in anderen Methoden brauchst und/oder auch im Hauptprogramm verwendest, dann muss es ausserhalb von den Methoden Deklariert werden und als Parameter uebergeben werden(falls es nicht SHARED Deklariert wurde). |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.01.2014, 14:58 Titel: |
|
|
Inzwischen noch die Sache mit dem Default-Parameter getestet und auf eine wichtige Einschränkung gestossen: Während der Kompilierzeit der Parameter-Variablen einer Sub/Function kennt FreeBasic diese für Ausdrücke im Default-Ausdruck noch nicht, d.h. bei
Code: | Function KKleinste OverLoad(daten()As T, rangIndex As Integer, dStart As Integer = _
LBound(daten), dEnde As Integer = UBound(daten)) As T |
weiss der Compiler also noch nicht, dass das "daten" in der LBound()-Funktion sich direkt aufs erste "daten()As T" beziehen solll.
Sinnvolle Beispiele gibt es dafür genügend als nur wie hier, z.B. an einen Kreiszeichenbefehl der Art
Code: | Sub ZeichneKreis(x As Integer, y As Integer, rx As Integer, ry As Integer=rx) |
denken, d.h. wenn man dem Programmierer eine Aufruf-Variante mit nur 3 Parameter für Kreis anstelle Ellipse bereitstellen möchte.
=> Müsste ich vermutlich auf dem Entwicklerportal als Feature-Request (Parametervariablen einer Sub und Function für Defaultwert-Ausdrücke bekanntmachen) stellen. Natürlich wäre für diesen speziellen Fall der sinnvollere Feature-Request die direkte Unterstützung von Unterbereichen, d.h. dass ich halt ein
Code: | element1 = KKleinste(q(), 2) ' Ganzes Array
element1 = KKleinste(q(1 To 3), 2) ' Unterbereich |
übergeben dürfte -> LBound() und UBound() innerhalb der Sub/Function dürfen nur diesen Unterbereich zurückliefern, wie dies bei Ada der Fall ist.
@Profis: Kennt jemand den genauen Link/Unterforum für die Entwickler-Diskussionen, also gewissermassen das Bugtraq für den FB-Compiler?
@Muecke: In diesem Sinn ist also mein Vorschlag aktuell noch nicht möglich, stattdessen empfehle ich Dir besser folgendes zu verwenden:
Code: | Function KKleinste (daten()As T, rangIndex As Integer, dStart As Integer, dEnde As Integer) As T
' Implementierung wie diskutiert
End Function
Function KKleinste OverLoad(daten()As T, rangeIndex As Integer) As T
Return KKleinste(daten(), rangeIndex, LBound(daten), UBound(daten))
End Function |
d.h. statt Defaultparameter verwende ich einfach eine weitere Überladung der Funktion, innerhalb welcher der Compiler die Variable daten() natürlich kennt.
Unter
http://beilagen.dreael.ch/QB/RangFunktionModul.bi
http://beilagen.dreael.ch/QB/RangFunktion.bas
daher mein berühmtes Beispiel entsprechend ergänzt.
Das Kreiszeichenbeispiel lässt sich mit
Code: | Sub ZeichneKreis(x As Integer, y As Integer, rx As Integer, ry As Integer)
' Implementierung
End Sub
Sub ZeichneKreis Overload(x As Integer, y As Integer, r As Integer)
ZeichneKreis x, y, r, r
End Sub |
genau gleich lösen.
Dagegen die "Lösung"
Code: | Dim daten(...) As T
Function KKleinste (daten()As T, rangIndex As Integer, dStart As Integer =LBound(daten), dEnde As Integer = UBound(daten)) As T |
macht dagegen keinen Sinn, weil das Prinzip der Software-Wiederverwendbarkeit verletzt wird, da globale Variablen in einem Default-Ausdruck nichts zu suchen haben. => Compiler müsste daher in Defaultausdrücke sogar nur parametereigene Variablen akzeptieren. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 22.01.2014, 19:00 Titel: |
|
|
@dreael: OK dann las mich das mal zusammen fassen ich habe das Richtig verstanden, jedoch kann FreeBasic das nicht "Default-Parameter" daher auch der Fehler.
OK dann liegt es nicht an mir das ich dazu nichts gefunden habe. ist jetzt nicht Böse gemeinte doch das Bezeugt mich ein wenig.
Ich gebe einfach immer eine Gänze an. dann passt es auch wider
DANKE |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.01.2014, 20:25 Titel: |
|
|
Muecke hat Folgendes geschrieben: | OK dann las mich das mal zusammen fassen ich habe das Richtig verstanden, jedoch kann FreeBasic das nicht "Default-Parameter" daher auch der Fehler. |
Default-Parameterwerte gibt es natürlich schon, allerdings mit Einschränkungen, wenn diese aus Variablen berechnet werden sollen, deshalb auch meine Bemerkung schon zu Beginn, dass ein Test nötig ist. Und dieser ist heute nun erfolgt, wo ich nun auf die genannte Einschränkung gestossen bin, dass Variablen in Defaultparametern vom aktuellen FB-Compiler nur aus dem globalen Namensraum entnommen ist, wie Du dies mit einem
Code: | Dim daten(...) As T |
vor der Function-Implementierung selber gemerkt hast, damit Dein Programm wieder übersetzbar wird.
Denke jedoch einfach an den Fall KKleinste() und KGroesste() als separat übersetzbare Einheit zwecks Wiederverwendung (=ein sehr wichtiges Ziel in der Software-Entwicklung; auf diesem Weg entstehen Bibliotheken, wie sie hier auch immer wieder genannt!) in beliebig vielen Projekten, we ich es in meinem Beispiel anhand der komplett verschiedenen Datentypen auch demonstriere.
Dieser Fall zeigt sogar, dass das jetzige Verhalten im Prinzip sogar ein offener Bug im FB-Compiler darstellt: Wenn Du nun Deine separat übersetzbare KKleinste()-Funktion mit diesem globalen DIM ergänzt, so würde der Compiler die Indexgrenzen dieses Dummy-Arrays statt dem übergebenen Array verwenden:
Modul.fbp / Modul.bas:
Code: | ' Dies soll wiederverwendbar sein! => Übersetzung nur als Modul.o!
Type T As Single
Dim daten(1 To 10) As T
Function KKleinste(daten() As T, rangIndex As Integer, dStart As Integer = LBound(daten), dEnde As Integer = UBound(daten)) As T
' Implementierung
End Function |
Anwendung1.fbp / Anwendung1.bas:
Code: | #include "KKleinste.bi"
Dim temperatur(1 To 31) As Single, x As Single
' Code, z.B. Datenlogger auslesen
x = KKleinste(temperatur(), 17) |
Anwendung2.fbp / Anwendung2.bas:
Code: | #include "KKleinste.bi"
Dim reifendruck(50 To 500) As Single, p As Single
' ...
p = KKleinste(reifendruck(), 25) |
Wenn aktuell mit LBound() so wie hier im Defaultausdruck gearbeitet wird, arbeitet KKleinste() mit vollkommen falschem dStart und dEnde, d.h. nimmt in beiden Fällen dasjenige der globalen Modulvariable, also 1 bzw. 10 in diesem Fall.
Letzter Post von mir vor diesem: Mit Überladung statt Defaultparametern lässt sich dieser FB-Compilerbug umgehen, denn in dieser Form arbeitet KKleinste() so, wie Du es als Programmierer beabsichtigt hast.
@Profils: Müsste man also im Bugtraq melden. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 22.01.2014, 21:20 Titel: |
|
|
Zitat: | @Profils: Müsste man also im Bugtraq melden. |
Was genau erwartest du, soll hier passieren?
Was du hier machst, ist überhaupt erst seit fbc 0.90 möglich und hat vorher einen Fehler geworfen. Der Ausdruck wird nun zur Compile-Zeit ausgewertet, vorher konnte er nichts damit anfangen.
Wenn du die Defaultwerte mit einem bestimmten Array mit statischer Größe belegst, wie soll sich der Defaultwert dann ändern? Nur weil der erste Parameter den gleichen Namen trägt, wie das auszuwertende Array weiter hinten, setzt er diese nicht gleich.
Der Compiler macht es sowieso besser, als ich es erwartet hätte. Das ist zusehen, sobald das Array dynamisch ist:
Code: |
Dim As Single array() 'uninitialisiert -> LBOUND = 0, UBOUND = -1 !
Sub test(andererName() As Single, dStart As Integer = LBound(array), dEnde As Integer = UBound(array))
Print "Defaultwerte: ", dStart, dEnde
Print "Aktuelle Werte: ", LBound(andererName), UBound(andererName)
End Sub
Print "---------------------"
Print "Vor REDIM"
Print "----------"
test(array())
Print "---------------------"
ReDim array(5 To 15)
Print "---------------------"
Print "Nach REDIM"
Print "----------"
test(array())
Print "---------------------"
Sleep
|
Er passt die Defaults an die geänderte Größe des Arrays an. Dieses Verhalten lässt mich nahelegen, dass das Konstrukt einen Pointer auf die Grenzwerte des Arrays hält und beim Aufruf der Methode den Wert aus dem Speicher zieht, was auch immer es gerade ist.
Die Defaults können aber auch wie erwartet überschrieben werden, indem man Werte beim Aufruf angibt. Das lässt sich testen, wenn man im oberen Code das hier macht:
Code: | test(array(), -5, -5) |
Wenn du ihm also ein Array als Parameter übergibst, ist der Defaultwert der Methode weiterhin auf das namentlich definierte Array bezogen.
Man könnte es als Feature-Request ausgeben, aber ein Bug ist das nicht. |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.01.2014, 23:02 Titel: |
|
|
MOD hat Folgendes geschrieben: | Code: |
Dim As Single array() 'uninitialisiert -> LBOUND = 0, UBOUND = -1 !
Sub test(andererName() As Single, dStart As Integer = LBound(array), dEnde As Integer = UBound(array))
Print "Defaultwerte: ", dStart, dEnde
Print "Aktuelle Werte: ", LBound(andererName), UBound(andererName)
End Sub |
|
Du hast das Problem noch nicht ganz verstanden: Gehe vom Fall aus, dass Sub test() ein wiederverwendbares separates Modul geben soll -> dieses darf nichts von array() wissen, sondern darf nur andererName() kennen! Bug/Feuture-Request: Dein "Dim array()" soll also nicht mehr nötig sein, sondern Variablen müssten bereits während der Parametersignatur-Auswertung bekannt sein, also als
Code: | Sub test(andererName() As Single, dStart As Integer = LBound(andererName), dEnde As Integer = UBound(andererName()) |
formulierbar.
Dein eigenes Beispiel vorher passend erweitert:
Code: | Dim As Single array() 'uninitialisiert -> LBOUND = 0, UBOUND = -1 !
Dim As Single array2()
Dim As Single array3()
Sub test(andererName() As Single, dStart As Integer = LBound(array), dEnde As Integer = UBound(array))
If dStart <> LBound(andererName) Or dEnde <> UBound(andererName) Then
Color 12
EndIf
Print "Defaultwerte: ", dStart, dEnde
Color 15
Print "Aktuelle Werte: ", LBound(andererName), UBound(andererName)
End Sub
ScreenRes 640, 480
Width 80, 30
Print "---------------------"
Print "Vor REDIM"
Print "----------"
test(array())
test(array2())
test(array3())
Print "---------------------"
ReDim array(5 To 15)
ReDim array2(7 To 27)
ReDim array3(19 To 38)
Print "---------------------"
Print "Nach REDIM"
Print "----------"
test(array())
test(array2())
test(array3())
Print "---------------------"
Sleep |
Beachte also die rot angezeigten Fälle! _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 22.01.2014, 23:26 Titel: |
|
|
Genau so habe ich es verstanden, aber es passiert halt das, was ich bei dem Code erwarten würde, nicht das, was du gerne hättest. Stell es doch als Feature Request auf sf.net. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 22.01.2014, 23:29 Titel: |
|
|
Ich würde ja so oder so als Standardwerte (z. B.) 0 und -1 übergeben (statt der Grenzen irgend eines Arrays) und in diesem Fall innerhalb der SUB die Werte der aktuellen Arraygrenzen verwenden. Dass der Benutzer absichtlich den Bereich von 0 bis -1 ausgeben will, ist sowieso nicht sinnvoll einsetzbar und sollte daher in allen "normalen" Fällen keine Konflikte hervorrufen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
TimesChange
Anmeldungsdatum: 20.11.2013 Beiträge: 85
|
Verfasst am: 23.01.2014, 00:38 Titel: |
|
|
grindstone hat Folgendes geschrieben: | ...Ein Array in der Parameterliste einer Function wird immer ByVal übergeben, d.h., die Function bekommt nicht die Werte selbst übergeben, sondern nur deren Speicheradresse und greift daher immer auf das echte Array außerhalb der Function zu, so, als ob du es global (also Shared) dimensioniert hättest. ... |
Bin gerade hierüber gestolpert...
Entweder ich hab's falsch verstanden, oder du hast es gerade genau verkehrt herum erläutert
Mit BYVAL wird m.W. eine Kopie des ursprünglichen Wertes übergeben; Änderungen des übergebenen Parameters in der Subroutine ändern NICHT den ursprünglichen Wert. Mit BYREF wird ein Zeiger übergeben, Änderungen in der Subroutine ändern daher auch den ursprünglichen Wert.
Und Array werden (wie UDTs und Strings) werden immer per BYREF übergeben.
Grüße
Rainer |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 23.01.2014, 08:22 Titel: |
|
|
@TimesChange:
Au ha! - Du hast natürlich Recht. Dabei habe ich den Text dreimal korrekturgelesen! Natürlich muß es ByRef heissen. Ich habe es auch schon verbessert (falls sich jemand wundert, worüber du dich hier beschwerst). Danke für den Hinweis, ich hoffe, mir ist jetzt niemand böse.
@Mücke: Zitat: | Variablen werden immer als BYREF übergeben | Das stimmt so nicht. Variablen in der Parameterliste werden standardmäßig ByVal übergeben. Du kannst das dazuschreiben oder auch nicht. Wenn du eine Variable ByRef übergeben willst, mußt du das angeben. Eine Ausnahme sind Arrays, die immer und nur ByRef übergeben werden. Und weil ByVal hier gar nicht möglich ist, darf hier weder das eine noch das andere angegeben werden. Ansonsten hast du alles richtig verstanden.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 23.01.2014, 12:01 Titel: |
|
|
ups das meinte ich eigentlich.
OK, ich dachte jedoch auch das ich bei einem Array das Überschreiben mit einem ByVal verhindern kann, Ok was dazu gelernt.
Danke. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 23.01.2014, 15:12 Titel: |
|
|
Muecke hat Folgendes geschrieben: | ich dachte jedoch auch das ich bei einem Array das Überschreiben mit einem ByVal verhindern kann |
Geht nicht auf diese Weise - aber siehe dazu http://www.freebasic-portal.de/befehlsreferenz/const-klausel-636.html (Syntax A) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
|
|
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.
|
|