Deutsch
Stammtisch & Café

Dim, ein paar Fragen...

 
- Seite 1 -



Jörg
Sellmeyer
Das hier funktioniert. SizeOf ermittelt auch den richtigen Wert. Bei String$(B#,0) wird jedoch trotzdem immer der ganze String ausgegeben:
KompilierenMarkierenSeparieren
Declare B#
Dim B#,11
String B#,0 = "0123456789"
Print Char$(B#,0,SizeOf(B#) - 1)
Dim B#,6
Print Char$(B#,0,SizeOf(B#) - 1)
WaitInput

Profanhilfe
Der Befehl kann ab XProfan 10 mehrmals auf eine Bereichsvariable angewandt werden und ändert dynamisch die Größe des Speicherbereiches.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
30.08.2008  
 



 
- Seite 5 -



Frank
Abbing
Nein!
 
02.09.2008  
 




Stefan
Landsberg
interessant was ihr so alles über skype austauscht
 
02.09.2008  
 




Jörg
Sellmeyer
Oha, ich glaub hier muß ich bald schon wieder einen Thread splitten. Für mich (als immerhin Threadstarter ) hat sich das Problem im Grunde aufgeklärt, da ich nun weiß, daß nicht Dim das Nullbyte am Ende setzt, sondern der Befehl String.
Das mit dem Löschen finde ich auch durchaus diskussionswürdig, vor allem, da sich die Frage stellt, was soll bei ReDim passieren. Außerdem bleibt immernoch die Frage, ob es sinnvoll ist, daß man auf Speicher zugreifen kann, der nicht im Programm reserviert ist. Allerdings fände ich da einen Geschwindigkeitsverlust bedenklicher, als den Einsatz von etwas Gehirnschmalz seitens des Programmierers beim Benutzen der Funktion.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
02.09.2008  
 




Michael
Wodrich
Egal ob da irgendwo ein zusätzliches Nullbyte beim Redimensionieren geschrieben wird:

Char und String müssen eine Bereichsprüfung vornehmen!
Da diese für saubere Programmierung immer benötigt wird müsste der Programmierer das sonst jedesmal mit programmieren.

Erinnern wir uns doch mal an M$, die auch dachten, eine Bereichsprüfung sei aus Geschwindigkeitsgründen nicht nötig. An den Folgen dieses Vorgehens leidet Windows doch noch immer.

Schöne Grüße
Michael Wodrich

P.S.:
Da SizeOf() auch nach einem neu dimensionieren den korrekten Wert liefert, sollte es nicht schwer sein String/Char an der Bereichsgrenze auszubremsen.
 
Programmieren, das spannendste Detektivspiel der Welt.
02.09.2008  
 





Da SizeOf() auch nach einem neu dimensionieren den korrekten Wert liefert, sollte es nicht schwer sein String/Char an der Bereichsgrenze auszubremsen.


Die Bereichsgrenzen einer Bereichsvariable soll man nicht eingrenzen durch weiteres ausbremsen mit String-Überprüfung usw, dieses ist ein freier Bereich für den User. Hier möchte ich meine freiheiten haben und selber vom ersten Byte bis zum letzten Byte bestimmen. Wenn ich Speicher damit reserviere und ihn überschreite muss ich damit rechnen das das Programm abstürtz.
Und wenn Windows nicht alles auf "0" gesetzt hat, muss ich dafür sorgen.

mfg
peter
 
03.09.2008  
 




RGH
Michael Wodrich
Da SizeOf() auch nach einem neu dimensionieren den korrekten Wert liefert, sollte es nicht schwer sein String/Char an der Bereichsgrenze auszubremsen.


Klar ist das ohne Probleme möglich. Die Frage wäre hier, ob es auch von allen so gewünscht wäre. Das scheint mir nicht so. (Wenn ich mich recht erinnere, war das früher auch mal so, wurde aber aufgrund von Userwünschen entfernt.)

Oben gab es die Frage nach der Art der Speicher-Reservierung. Ich benutze in Delphi folgende Zeile:

If Z <> NIL Then ReAllocMem(Z,ParLng) Else Z := AllocMem(ParLng);

Hierbei ist Z der Pointer auf den Speicher und ParLng die angeforderte Größe.

Zum "Nullen" des Bereiches nach dem ersten Dim kann man Clear verwenden.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
08.09.2008  
 




Frank
Abbing
Welche API verbirgt sich hinter den Delphi-Funktionen?
 
08.09.2008  
 



[...] 
 
08.09.2008  
 




Frank
Abbing
Nö. Rolands AllocMem hat nur einen Parameter. Zähl einfach mal nach...
 
08.09.2008  
 



Ähm was hab ich da abkopiert? lol!

Naja hier steht auch was: [...] 

z.B. steht dort heaph.inc und das getmem benutzt wird: "Allocate new memory on the heap".

hähphähphähp...
 
08.09.2008  
 




Frank
Abbing
Das ist keine API, iF. Wird eine Delphi-Funktion sein. Darum wird Roland mir auch sicher sagen, dass er nicht weiss, welche API sich dahinter verbirgt *prophezei*...
 
08.09.2008  
 



Ich meine das ist Heap-Zeugs...
 
08.09.2008  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

27.763 Betrachtungen

Unbenanntvor 0 min.
Michaeal21.03.2012

Themeninformationen



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