Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi daten verändern auf die pointer zeigt? (https://www.delphipraxis.net/144638-daten-veraendern-auf-die-pointer-zeigt.html)

Marco Steinebach 12. Dez 2009 22:58


daten verändern auf die pointer zeigt?
 
Hallo zusammen,
Ich habe eine Funktion, die als parameter
buffer: pointer
length: DWord
übergebenbekommt. Length ist die Anzahl der Bytes, die von Buffer belegt werden.
Wie, um gotteswillen, kann ich auf die Daten, die durch buffer referenziert werden zugreifen, und sie verändern?
Ich weiß, daß die Daten vom typ Single sein sollen.
Ich muß nur den ganzen Puffer durchlaufen, und jeweils zwei Single-Paare verändern.
Kann mir da bitte mal jemand auf die Sprünge helfen?
Einen freundlichen Gruß
Marco

Neutral General 12. Dez 2009 22:59

Re: daten verändern auf die pointer zeigt?
 
Hi,

Delphi-Quellcode:
procedure Test(p: Pointer);
begin
  PSingle(p)^ := 54.23; // 1. Single
  PSingle(Cardinal(p) + SizeOf(Single))^ := 12.23; // 2. Single
  inc(PSingle(p),2); // Nächstes Paar
  PSingle(p)^ := 54.8; // 3. Single
  PSingle(Cardinal(p) + SizeOf(Single))^ := 2.8; // 4. Single
end;
Das sollte dir helfen

Marco Steinebach 12. Dez 2009 23:56

Re: daten verändern auf die pointer zeigt?
 
Hallo Neutral General,
Vielen dank. Und wie das hilft! ;-)
Einen schönen Abend noch
Marco

Blup 14. Dez 2009 10:23

Re: daten verändern auf die pointer zeigt?
 
Macht auch nichts anderes, sieht aber besser aus:
Delphi-Quellcode:
type
  P2Single = ^T2Single;
  T2Single = record
    a: Single;
    b: Single;
  end;

procedure Test(p: P2Single);
begin
  p^.a := 54.23; // 1. Single
  p^.b := 12.23; // 2. Single
  inc(p, 1);    // Nächstes Paar
  p^.a := 54.8; // 3. Single
  p^.b := 2.8; // 4. Single
end;
Test kann natürlich auch mit einem normalen Pointer aufgerufen werden.

Marco Steinebach 16. Dez 2009 17:44

Re: daten verändern auf die pointer zeigt?
 
Zitat:

Zitat von Blup
Macht auch nichts anderes, sieht aber besser aus:

Stimmt, danke. Gleich umgesetzt, denn es sieht wirklich besser aus!
Viele Grüße
Marco


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