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 -




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  
 



 
- Seite 6 -



RGH
Aus der Hilfe von Delphi 5 (in der Hilfe zu Turbo-Delphi fehlt der Eintrag):

"AllocMem weist einen Speicherbereich der angegebenen Größe auf dem Heap zu. Dabei wird jedes Byte des Blocks auf Null gesetzt. Mit FreeMem kann der Puffer wieder freigegeben werden."

Also wird der Speicher beim ersten DIM doch genullt! (Sorry, das war mir entfallen.) Außerdem wird er auf dem Heap zugewiesen. Damit sollten alle Unklarheiten beseitigt sein.

Und hier noch zu ReAlllocMem:

"Diese Operation wirkt sich nicht auf den Inhalt des Speicherblocks aus. Wird der Block jedoch vergrößert, sind die neu zugewiesenen Speicherbereiche nicht definiert. Kann der Block nicht an dieser Position im Speicher reserviert werden, wird er in einen anderen Bereich auf dem Heap verschoben"

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  
 




Michael
Wodrich
Dann ist freepascal also die Fundgrube in der man suchen muß. Die Heap-Häppchen Reserviererei kenne ich noch aus Turbo-Pascal.

Das sollte sich aber mit ASM gut ansteuern lassen - für Übertragungen in beide Richtungen.

Momentan hab ich dafür keine Zeit, aber es ist definitiv auf der Todo-Liste.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
11.09.2008  
 




Frank
Abbing
Ja. Danke für die Infos, Roland!
 
12.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.825 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