Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie bekomm ich einen undefinierten Buffer in ein Array? (https://www.delphipraxis.net/102394-wie-bekomm-ich-einen-undefinierten-buffer-ein-array.html)

hitzi 27. Okt 2007 21:44


Wie bekomm ich einen undefinierten Buffer in ein Array?
 
Hallo,

wie bekomm ich einen solchen Funktionsparamter in ein Array of Char:
Delphi-Quellcode:
function xyz(const Buffer; Len : integer);
Buffer soll in ein Array of Char. Len ist die Größe von Buffer.

Gruss

SirThornberry 27. Okt 2007 21:47

Re: Wie bekomm ich einen undefinierten Buffer in ein Array?
 
willst du ein Array of Char übergeben oder hast du eine Funktion mit diesem Funktionskopf und willst es in ein Array of Char kopieren?
Mit der Funktion Move kannst du ganz einfach speicher kopieren. Unter anderem auch von einem untypisiertem Bereich in ein Array of char.

hitzi 27. Okt 2007 21:50

Re: Wie bekomm ich einen undefinierten Buffer in ein Array?
 
Ich möchte es in das Array of Char kopieren. Wie macht man das mit move?

SirThornberry 27. Okt 2007 21:57

Re: Wie bekomm ich einen undefinierten Buffer in ein Array?
 
Delphi-Quellcode:
move(Buffer, YourArray[0]);

sirius 28. Okt 2007 06:06

Re: Wie bekomm ich einen undefinierten Buffer in ein Array?
 
@sir: Fehlt da nicht noch die Länge?
Und je nachdem, was buffer ist, kannes auch so sein:
Delphi-Quellcode:
move(buffer^,YourArray[0],len);

alzaimar 28. Okt 2007 06:30

Re: Wie bekomm ich einen undefinierten Buffer in ein Array?
 
Zitat:

Zitat von sirius
@sir: Fehlt da nicht noch die Länge?

Stimmt, aber Sir Thornberry wollte auf die Aufrufsyntax des Buffers hinweisen
Zitat:

Zitat von sirius
Und je nachdem, was buffer ist, kannes auch so sein:
Delphi-Quellcode:
move(buffer^,YourArray[0],len);

Nein, denn Buffer ist kein Zeiger, sondern eine untypisierte Variable.

Der vollständig korrekte Aufruf ist also:
Delphi-Quellcode:
Move (Buffer, YourArray, Len)
oder
Delphi-Quellcode:
Move (Buffer, YourArray[Low(YourArray)], Len)
In beiden Fällen wird implizit die Adresse des ersten Elementes von 'YourArray' übergeben.
Letztere Variante sollte man bei Strings verwenden:
Delphi-Quellcode:
SetLength (YourString, Len);
Move (Buffer, YourString[1], Len)

Zacherl 28. Okt 2007 15:36

Re: Wie bekomm ich einen undefinierten Buffer in ein Array?
 
Ich verwende immer CopyMemory dazu ..

Neutral General 28. Okt 2007 15:40

Re: Wie bekomm ich einen undefinierten Buffer in ein Array?
 
Zitat:

Zitat von Zacherl
Ich verwende immer CopyMemory dazu ..

Bringt dir aber bei untypisierten Daten nichts und abgesehn davon:

Delphi-Quellcode:
procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD);
begin
  Move(Source^, Destination^, Length);
end;
;)

Gruß
Neutral General


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