Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Daten in "buffer" einlesen (https://www.delphipraxis.net/117386-daten-buffer-einlesen.html)

S20000 17. Jul 2008 09:22


Daten in "buffer" einlesen
 
Guten Morgen,

ich benutze die Komponente PlotLab 3.1 (zum grafischen Darstellen von Messwerten.
Wenn ich nun diese Daten abspeichern möchte so kann ich den folgenden Befehl anwenden.

Delphi-Quellcode:
slscope1.Channels[ 0 ].Data.GetXYData( XBuffer: PReal; YBuffer: PReal );
Jetzt weiß ich nicht wie man diese "Buffer" befüllen kann.
Vielleicht könnt ihr mir aus Erfahrung, evtl. ohne die Komponente
zu kennen was die Ausdrücke in der Klammer bedeuten.
Real ist doch ein Typ für Gleitkommezahlen?? PReal wäre dann ein
Pointer auf Real??

Schönen Gruß
Sebastian

S20000 28. Okt 2008 09:37

Re: Daten in "buffer" einlesen
 
Ich schiebe den Beitrag mal vorsichtig nach oben. Vielleicht kann mir
mittlerweile jemand helfen.

nahpets 28. Okt 2008 09:53

Re: Daten in "buffer" einlesen
 
Hallo,

hilft Dir derda?

S20000 28. Okt 2008 10:05

Re: Daten in "buffer" einlesen
 
Hi,
den link kenne ich. Da werden alle Funktionen etc. der Komponente aufgezählt.
Leider ist kein Beispiel dabei wie ich Daten z.B. in einer Datei speichere...

Gruß
Sebastian

Klaus01 28. Okt 2008 10:22

Re: Daten in "buffer" einlesen
 
Guten Morgen,

für mich schaut das so aus:

Delphi-Quellcode:
slscope1.Channels[ 0 ].Data.GetXYData( XBuffer: PReal; YBuffer: PReal );
Delphi-Quellcode:
type
  PReal = ^real;


var
  xBuffer:PReal;
  yBuffer:PReal;

  xValue: real;
  yValue: real;

begin
  new(xBuffer);
  new(yBuffer);
  slscope1.Channels[ 0 ].Data.GetXYData(xBuffer,yBuffer);
  xValue := xBuffer^;
  yValue := yBuffer^;
  dispose(xBuffer);
  dispose(yBuffer);
end;
Grüße
Klaus

jfheins 28. Okt 2008 16:25

Re: Daten in "buffer" einlesen
 
Oder so:

Delphi-Quellcode:
var
  xValue: real;
  yValue: real;

begin
  slscope1.Channels[ 0 ].Data.GetXYData(@xValue,@yValue);
end;
Ist etwas kürzer :stupid:

@Variable liefert ja die Adresse der Variable zurück, und somit einen Pointer.

Oder liefert die Funktion mehrere Werte zurück? in diesem Fall liefert sie wahrscheinlich 2 Pointer, die auf einen Speicherbereich zeigen, an dem mehrere Werte hintereinander stehen. Dann müsste sie aber noch die Länge zurückgeben :gruebel:

Klaus01 28. Okt 2008 16:28

Re: Daten in "buffer" einlesen
 
Zitat:

Zitat von jfheins
Oder so:

Delphi-Quellcode:
var
  xValue: real;
  yValue: real;

begin
  slscope1.Channels[ 0 ].Data.GetXYData(@xValue,@yValue);
end;
Ist etwas kürzer :stupid:

@Variable liefert ja die Adresse der Variable zurück, und somit einen Pointer.

Oder liefert die Funktion mehrere Werte zurück? in diesem Fall liefert sie wahrscheinlich 2 Pointer, die auf einen Speicherbereich zeigen, an dem mehrere Werte hintereinander stehen. Dann müsste sie aber noch die Länge zurückgeben :gruebel:

Gut und schön, aber wenn sich das dann nicht mit der Typenbezeichnung PReal beißt.
Delphi-Quellcode:
slscope1.Channels[ 0 ].Data.GetXYData( XBuffer: PReal; YBuffer: PReal );
Grüße
Klaus

S20000 29. Okt 2008 16:39

Re: Daten in "buffer" einlesen
 
Zitat:

Oder liefert die Funktion mehrere Werte zurück? in diesem Fall liefert sie wahrscheinlich 2 Pointer, die auf einen Speicherbereich zeigen, an dem mehrere Werte hintereinander stehen. Dann müsste sie aber noch die Länge zurückgeben

Ich denke schon das mehrere Daten dahinterstecken (Buffer)..
Delphi-Quellcode:
slscope1.Channels[ 0 ].data.getsize
gibt es auch. (Gibt ein integer wieder)

Trotzdem bekomme ich es nicht hin die Daten mal sichtbar zu machen.

Klaus01 29. Okt 2008 16:46

Re: Daten in "buffer" einlesen
 
Guten Abend,

gibt es denn kein Stückchen Doku wo drinnen steht wie
PReal deklariert ist - kann ich mir kaum vorstellen.
Hast Du die Sourcen der Komponente?

PReal läßt dem Namen nach darauf schließen das es sich um einen Pointer auf einen RealTypen handelt.
Wenn dem nicht so ist und eventuell ein Array dahintersteht, sollte das irgendwo dokumentiert sein.

Grüße
Klaus

jfheins 29. Okt 2008 16:48

Re: Daten in "buffer" einlesen
 
Okay, dann müsste es imho so aussehen:

(Unter der Annahme, dass getsize die Anzahl der Datensätze zurückgibt)

Delphi-Quellcode:
type
  PReal = ^real;

var
  xBuf: array of real;
  yBuf: array of real;
begin

  setlength(xBuf, slscope1.Channels[0].data.getsize);
  setlength(ybuf, slscope1.Channels[0].data.getsize);

  // getsize liefert die Anzahl zurück ........ ?

  slscope1.Channels[0].Data.GetXYData(@xBuf[0],@yBuf[0]);

  // Werte müssten jetzt im Array stehen
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz