AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie bekomme ich einen Zeiger auf ein dynamisches Array ?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie bekomme ich einen Zeiger auf ein dynamisches Array ?

Ein Thema von Whookie · begonnen am 6. Nov 2007 · letzter Beitrag vom 7. Nov 2007
Antwort Antwort
Seite 2 von 2     12   
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#11

Re: Wie bekomme ich einen Zeiger auf ein dynamisches Array ?

  Alt 6. Nov 2007, 22:34
So .. muss mich entschuldigen, aber hätte das ganze wohl kopieren und nicht abtippen sollen ... natürlich sind die Datentypen gleich .. also nochmals korrigiertes erstes Posting.

@mkinzler: siehe Posting #5 @data = @data[0] (kann man im Debugger auch ganz leicht ausprobieren indem man beides jeweils an einen Pointer zuweist) z.B.:

Delphi-Quellcode:
  ..
  p1 = @data;
  p2 = @data[0];
  if (p1 <> p2) Then
    raise exception.create('p1 <> p2');
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#12

Re: Wie bekomme ich einen Zeiger auf ein dynamisches Array ?

  Alt 7. Nov 2007, 00:28
Warum übergibst du es nicht:

a) als var Parameter und hast somit automatisch einen Zeiger. Wenn es sich (wie hier vermutet) um einen DLL Aufruf handelt, dann kannst du den Prototypen in der App entsprechend mit Var deklarieren und in der DLL mit pointer implementieren
b) als typenlosen Var Parameter
c) als reiner Pointer
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#13

Re: Wie bekomme ich einen Zeiger auf ein dynamisches Array ?

  Alt 7. Nov 2007, 07:04
Delphi-Quellcode:
Type
  PLongword = ^TLongword;
  TLongword = Array Of Longword;
das ist wohl sinnfällig. Richtg so

Delphi-Quellcode:
type
  PLongWordArray = ^TLonagWordArray;
  TLongWordArray = array[0..MaxInt / 4 -1] of LongWord; // <-- man beachte kein dynamisches Array

  PLongWord = PLongWordArray; // <-- PLongWord sollte normalerweise ein Zeiger auf ein LongWord sein und nicht auf ein Array[] of LongWord !!
What you say is what you get :=)

Umwandlung eines dynm. Arrays in einen Zeiger auf das statische Array dann mit @Data[0], also immer auf das erste Element. Bei einem 2D-dyn.array dann also @Data[0, 0] usw.

Gruß Hagen
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#14

Re: Wie bekomme ich einen Zeiger auf ein dynamisches Array ?

  Alt 7. Nov 2007, 07:27
Zitat von negaH:
  TLongWordArray = array[0..MaxInt / 4 -1] of LongWord; // <-- man beachte kein dynamisches Array
Danke! Das ist der entscheidende Hinweis gewesen, irgendwie war ich der irrigen Meinung, dass mein ursprünglicher TLongword Type bereits statisch ist!
Whookie

Software isn't released ... it is allowed to escape!
  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 23:43 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