Deutsch
Forum

@SizeOf / ReDim

 

Georg
Hovenbitzer
Hallo zusammen,

ich sitze mal wieder an einem Problem und verstehe die Welt nicht mehr.
Zu dem was ich da zusammen programmiert habe, habe ich ein paar Fragen aber keine Antworten:
- wieso gibt @SizeOf(Test#) 1 und nicht 11 aus ?
- wie komme ich auf die echte Größe von Test# wenn ich den Rückgabewert nicht habe und @Sizeof nicht funktioniert ?
- wenn ich nicht Dim Dummy#,11 angebe oder den ReDim größer mache als der Inhalt, kommt bei der Ausgabe des Strings nur Müll raus, wieso ?

Sinn oder besser Zweck der ganzen Sache sollte sein, dass ich einen Bereich an eine Prozedur übergebe und diesen gefüllt zurück bekomme ohne die endgültige Größe zu Beginn zu wissen.

Vielleicht kann mir wieder jemand weiterhelfen, damit ich die Welt wieder verstehe
KompilierenMarkierenSeparieren
Proc ReDim

    Parameters ProcBereich#
    Declare Dummy#
    Dim Dummy#,20
    String Dummy#,0 = "0123456789"
    Dim Dummy#,11
    Dim ProcBereich#,@SizeOf(Dummy#)
    ProcBereich# = Dummy#
    Dispose Dummy#
    Return @SizeOf(ProcBereich#)

EndProc

Declare Size&
Declare Test#
Dim Test#,1
Size& = ReDim(Test#)
Print "Größe von Test# =",@SizeOf(Test#)
Print "Return Wert =",Size&
Print "Inhalt Bereich =",@String$(Test#,0)
Dispose Test#
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
18.11.2009  
 




Stephan
Sonneborn
Hallo Georg,

Du dimensioniert Test# in deinem Beispiel mit der Länge 1.
KompilierenMarkierenSeparieren
Declare Size&
Declare Test#
Dim Test#,1

Dann rufst Du die ReDim-Funktion auf. Als Übergabe-Parameter verwendest Du Test#.
KompilierenMarkierenSeparieren
Size& = ReDim(Test#)

Dabei weist Du ProcBereich# zunächst auch Test# zu.
KompilierenMarkierenSeparieren
Parameters ProcBereich#

Danach setzt Du aber ProcBereich# auf die Länge von Dummy#:
KompilierenMarkierenSeparieren
Dim ProcBereich#,@SizeOf(Dummy#)

Und Dummy hat die Länge 11 Zeichen, weil:
KompilierenMarkierenSeparieren
Dim Dummy#,11

Deswegen wird von Deiner Funktion immer 11 zurück gegeben.
KompilierenMarkierenSeparieren
Return @SizeOf(ProcBereich#)

Die SizeOf Funktion in Deiner Print-Anweisung beszieht sich auf das ursprüngliche Test#. Und das hat immer noch die Länge 1.
KompilierenMarkierenSeparieren
Print "Größe von Test# =",@SizeOf(Test#)
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
18.11.2009  
 




Georg
Hovenbitzer
Hallo Stephan,

deine Ausführungen sind richtig, aber ich habe da Einwende
Ab der 11er Version von Profan kann man an Prozeduren Bereiche übergeben, was ich hier versuche und was ja auch klappt, in Test# befindet sich am Ende der String "0123456789".

Die Frage ist nun, wieso kann ich mit @SizeOf nicht die veränderte Größe ermitteln ?
Ebenso interessiert mich wieso der Inhalt nur richtig ist wenn die Größe des Bereiches der des Inhaltes gleich ist.

Viele Grüße
Georg
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
18.11.2009  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.859 Betrachtungen

Unbenanntvor 0 min.
Ernst05.05.2014
Tommy25.12.2013

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Georg Hovenbitzer (2x)
Stephan Sonneborn (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie