AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Pointer, Array, Funktion geht nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer, Array, Funktion geht nicht

Ein Thema von schwa226 · begonnen am 29. Jun 2009 · letzter Beitrag vom 29. Jun 2009
Antwort Antwort
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

Pointer, Array, Funktion geht nicht

  Alt 29. Jun 2009, 18:36
Hi,

komm einfach nicht drauf!

Ich habe eine Class mit einer public Funktion die so deklariert ist:
Code:
function TProgramFunctions.CalcResult(const data: PLongArray): boolean;
PLongArray ist so definert:
Code:
TLongArray = Array of Byte;
PLongArray = ^TLongArray;
nun binde ich die Class über create in meine uMain ein und mache z.B. folgendes:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var test2: array [0..2] of byte;
begin

   teset2[0] := 123;
   teset2[1] := 47;
   teset2[2] := 85;

  ProgramCalc:= TProgramFunctions.Create;

  ProgramCalc.CalcResult(@test2);

end;
Ich übergebe somit ja den Pointer meines Arrays. Wenn ich aber nun in meiner CalcResult den Inhalt von data ansehe, steht immer "nicht verfügbarer Wert".

Warum?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Pointer, Array, Funktion geht nicht

  Alt 29. Jun 2009, 18:47
Sind das nun Fehler beim Tippen, oder wieso heißt Dein Array beim Befüllen teset?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Pointer, Array, Funktion geht nicht

  Alt 29. Jun 2009, 18:53
Zitat von schwa226:
Ich übergebe somit ja den Pointer meines Arrays. Wenn ich aber nun in meiner CalcResult den Inhalt von data ansehe, steht immer "nicht verfügbarer Wert".
Erstens versuche es einmal mit data^ stattdessen, zweitens ist der Wert im Debugger ggf. nur verfügbar, wenn die Variable auch an der Stelle verwendet wird. Denn sonst wird das ggf. wegoptimiert.

Gibt es denn ein Problem auch bei der Verwendung im Programm?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#4

Re: Pointer, Array, Funktion geht nicht

  Alt 29. Jun 2009, 19:03
Natürlich Tippfehler!

Wenn ich die Funktion Aufraufe sind die 3 Werte drinnen.

Tut leid, aber wie mit data^?

In der Funktion def lässt es mich das nicht machen.

Wenn ich debugge ist von Anfang an nichts in Data drinnen.

Der Pointer wird richtig übergeben, zumindest Pointer vor auf ruf der Funktion = Pointer in der Funktion...
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Pointer, Array, Funktion geht nicht

  Alt 29. Jun 2009, 19:06
Array of byte <> array[0..2] of byte. Ersteres ist dynamisch, zweiteres immer drei Byte lang. Völlig inkompatibel, ohne sich schwer zu verbiegen...
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Pointer, Array, Funktion geht nicht

  Alt 29. Jun 2009, 19:11
..
Zitat von schwa226:
PLongArray ist so definert:
Delphi-Quellcode:
TLongArray = Array of Byte;
PLongArray = ^TLongArray;
hier ist doch TLongArray (dynanisches Array) schon ein Pointer auf das Array.
PLongArray wäre dann ein Pointer auf einen Pointer.

.. oder irre ich mich da?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Pointer, Array, Funktion geht nicht

  Alt 29. Jun 2009, 19:14
Hab ich glatt übersehen. Wenn man schon einen Typ deklariert, sollte man den auch nutzen (wieso eigentlich TLongArray, wenn es ein Array of Byte ist?).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#8

Re: Pointer, Array, Funktion geht nicht

  Alt 29. Jun 2009, 19:43
vielen vielen vielen Dank!!!

Mit TLongArray gehts!!! Pointer des Pointers, man o man!!!!

LongArray nur weil langes/großes (Dynamisches) Array...
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:41 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