AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array[0..0] Speicherreservieren

Ein Thema von Alter Mann · begonnen am 7. Sep 2010 · letzter Beitrag vom 7. Sep 2010
Antwort Antwort
Seite 2 von 2     12   
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Array[0..0] Speicherreservieren

  Alt 7. Sep 2010, 11:06
Oder halt einen dynamischen Array zu verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

AW: Array[0..0] Speicherreservieren

  Alt 7. Sep 2010, 11:07
Oder halt einen dynamischen Array zu verwenden
Damit wird die API nicht klarkommen, weil dynamische Arrays anders aufgebaut sind.
(Sind ja nur Pointer und hier werden ja direkt im Record mehrere hintereinanderliegende Strukturen erwartet)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#13

AW: Array[0..0] Speicherreservieren

  Alt 7. Sep 2010, 11:07
Diese nichtfunktionierende Variante ist ein Versuch einer direkten Übersetzung der C-Header von Microsoft.

Dort kann man statische Arrays mit [0]-Länge deklarieren.
(leider kennt Delphi sowas nicht, so daß man sich über den Sonderfall von [0..0] das Array mit einem Feld und ohne Bereichsprüfung zu nutzen)
In den C-Vorlangen wird dann ebenfalls so gearbeitet, wie in meinem Beispiel.

Aber wie gesagt, ich mochte diese Arrays auch nicht und hab das mit selbstdeklariert, womit ich mir dan die Resourcenschutzblöcke und einen Großteil der Speicherverwaltung erspart hab.
(man darf auch mal Faul sein )

[edit]
OK, hier gibt es sogar mal ein [1]-Array im Original-Header
http://msdn.microsoft.com/en-us/library/aa364001.aspx
(es ist also eine fast 1:1-Übersetzung)
$2B or not $2B

Geändert von himitsu ( 7. Sep 2010 um 11:10 Uhr)
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
947 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

AW: Array[0..0] Speicherreservieren

  Alt 7. Sep 2010, 11:13
Hallo

und danke an alle, damit geht es:
Delphi-Quellcode:
var D: ^DLI;
begin
  GetMem(D,SizeOf(DLI) + 15*SizeOf(PI));
end;
Die Thematik IOCTL_DISK_GET_DRIVE_LAYOUT kommt gesondert.

Danke bis zum 17.
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
947 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

AW: Array[0..0] Speicherreservieren

  Alt 7. Sep 2010, 11:16
@himitsu

genau, nur das ich DRIVE_LAYOUT_INFORMATION_EX nicht verwenden darf; W2K lässt grüßen.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#16

AW: Array[0..0] Speicherreservieren

  Alt 7. Sep 2010, 14:21
Hast du mal probiert das array als
Delphi-Quellcode:
  DLI = record
    Count : DWORD;
    SIG : DWORD;
    PE : Array of PI;
  end;
zu definieren. Dann sollte auch SetLength funktionieren.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#17

AW: Array[0..0] Speicherreservieren

  Alt 7. Sep 2010, 14:26
@generic: Dann wäre es nicht kompatibel zu dem erwarteten C-Record. Es würde sogar mächtig krachen weil dann die interna des dynamischen Arrays überschrieben werden.
Denn das dynamische Arry an dieser Stelle stellt an einer anderen Stelle den Speicher zur Verfügung und nicht an der Stelle im Record.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz