Italia
Foro

@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 Dimensione von Test# wenn Io l' 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 finale Dimensione 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)
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#,1re>

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 trasferimento, was ich hier versuche und was ja auch klappt, in Test# è sich am Ende der String "0123456789".

Die Frage ist nun, wieso kann ich mit @SizeOf nicht die veränderte Dimensione ermitteln ?
Ebenso interessiert mich wieso der Inhalt nur richtig ist wenn die Dimensione 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  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.926 Views

Untitledvor 0 min.
Ernst05.05.2014
Tommy25.12.2013

Themeninformationen

Dieses Thema hat 2 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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