Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pointer nach array of Byte (https://www.delphipraxis.net/2196-pointer-nach-array-byte.html)

Gast 11. Jan 2003 21:21


Pointer nach array of Byte
 
Hi, wie kann ich Pointer nach array of Byte konventieren?

Da ich

Code:
type
MeinBuf : array of Byte;
nicht benutzen kann, habe ich in meine procedure MeinBuf:array of Byte eingefügt.

Ich zeig mal einen Ausschnitt aus meinem quelltext:

Code:
procedure Test (MeinBuf : array of Byte)
var
P : Pointer;
B : Byte;
begin
MeinBuf := P; // Hier ist mein Problem
B := buf[24]+(buf[25] shl 8)+buf[26];
end;
[/code]

Christian Seehase 11. Jan 2003 21:32

Moin Tillmann,

erst einmal herzlich willkommen.

Eine Typdeklaration wird nicht mit : sondern mit = zugewiesen.

Delphi-Quellcode:
type
  MeinBuf = array of Byte;
Wenn Du es dann so machst:

Delphi-Quellcode:
procedure Test(MB : MeinBuf);

var
  P : Pointer;
 
begin
  MB := P;
end;
dann funktioniert's (wobei mir im Moment ein Rätsel ist, was das soll ;-) , aber wird wohl am beispielhaft gewählten Ausschnitt liegen)

Gast 11. Jan 2003 21:46

Ja, vielen dank, dieser code ist eine vorgabe von einer delphicomponente, aber ich kann diesen nicht benutzen, da ich einen anderen compiler benutze, desswegen wollt ich fragen ob es noch ne andere möglichkeit als mit type gibt.

Wenn ich das array of in eine procedur tue, dann klappt es. Hättest du sonst noch eine idee?

Christian Seehase 11. Jan 2003 22:28

Moin Tillman,

im Moment leider nicht, bzw. was ich mir überlegt habe funktioniert nicht wie gewünscht :?

Zum einen: Was soll genau passieren?
Zum anderen: Wieso kannst Du ein dynamisches Array aufbauen, aber keinen Typ eines dynamischen Arrays erstellen? Was ist das für ein Compiler?

Gast 12. Jan 2003 09:09

Ganz einfach: ich habe den C++Builder2 von Borland worin ich auch delphi componenten installieren kann und pascal units kann ich auch in mein proggy mit einfügen, vielleicht hilft es dir ja, wenn ich dir einen kleinen teil der compo schicke, die ich verwenden will, ich kann sie halt nur nicht verwenden, da mein builder unter

type
Buf = array of Byte;

nen fehler anzeigt das er [ erwartet(er kennt kein dynamisches array)

aber das komische an der sache ist, unter var kann ich auch nicht buf:array of Byte benutzen, aber wnen ich das in ne procedure setze geht das...

Hier mal mein code

Code:
type
  ByteArray = array of Byte; //Mein Prob
private
 FData:Pointer;


procedure Laden;
var
   buf: ByteArray;
begin
buf := ByteArray(nil);
buf := ByteArray(FData);

BPP       := buf[12];
DataSize  := buf[14] + (buf[15] shl 8) + (buf[16] shl 16) + (buf[17] shl 24);

...

end;
PS: Schönes Forum und danke für deine mühe

Christian Seehase 12. Jan 2003 09:59

Moin Tillmann,

das ist als Typangabe in der Prozedur auch kein dynamisches Array, sondern ein offener Array Parameter (unter dem Stichwort könnte auch die Hilfe von C++ etwas hergeben).
Das heisst, es kann ein beliebig grosses, statisches (!), Array übergeben werden.

Wenn ich nicht sehr irre, sind der C++ Builder 2 und Delphi 3 ungefähr zeitgleich erschienen, und D3 kennt auch keine dynamischen Arrays (wie wir hier gerade letzte Woche feststellen konnten).

Um an dynamische Arrays zu kommen heisst's dann also selberbasteln und verwalten :?

Gast 12. Jan 2003 12:59

hm... schade, aber vielen dank, muss ich mir meine componente halt in c++ übersetzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 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