Einzelnen Beitrag anzeigen

Caleb

Registriert seit: 26. Nov 2010
11 Beiträge
 
#8

AW: Globales Array - Verständnisfrage

  Alt 1. Dez 2010, 09:28
So ...
Delphi-Quellcode:
unit oem_ref;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  sgr_def, sgr_data, StdCtrls, ExtCtrls;

type
  TForm6 = class(TForm)
    sp_XYLine1: Tsp_XYLine;
    sp_XYPlot1: Tsp_XYPlot;
    Panel1: TPanel;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    Button2: TButton;
    Button1: TButton;
    Button3: TButton;
    Button4: TButton;
    Memo1: TMemo;
    sp_XYPlot2: Tsp_XYPlot;
    sp_XYLine2: Tsp_XYLine;
    sp_XYPlot3: Tsp_XYPlot;
    sp_XYLine3: Tsp_XYLine;
    Memo2: TMemo;
    procedure ReferenzErmitteln;
    procedure ReferenzZeichnen;
    procedure Ref;
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    FActiveFlagsSave : Word;
    FDebugMode : Boolean;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form6: TForm6;

implementation

uses oem_main,oemlib;
{$R *.DFM}

var
ref: Array [0..260] Of Integer;
und zwei Prozeduren
Delphi-Quellcode:
procedure TForm6.Ref;
var i:integer;
    sp:TSpectrum;

begin
   if not FDebugMode then
   begin
      Close;
      exit;
   end;
   OEMData.Devices[0].DebugFlags:=OEMData.Devices[0].DebugFlags or df_start;
   while OEMData.Devices[0].DebugFlags and df_start <> 0 do;

   sp_XYLine1.Clear;
   sp_XYLine1.LockInvalidate:=true;

   sp:=OEMData.Devices[0].Spectrum;
   for i:=0 to 260 do
   begin
      sp_XYLine1.AddXY(i,Sp[i]);
   end;
   sp_XYLine1.LockInvalidate:=false;
end;

procedure TForm6.ReferenzErmitteln;
var
    i:integer;
    sp:TSpectrum;
begin

   sp:=OEMData.Devices[0].Spectrum;
   for i:=0 to 260 do
   begin
      ref[i] := sp[i];
   end;
   with Memo1 do
   begin
   ScrollBars := ssBoth;
   Lines[0] := 'Mal kucken';
    for i := 0 to 260 do
     Lines.Add(IntToStr(i)+' '+IntToStr(ref[i]))
   end;
end;
Die Prozedur Ref wird mit einer Schleife immer wieder ausgeführt und zeichnet mir das ermittelte Spektrum meiner CCD-Zeile auch wunderbar.

In ReferenzErmitteln will ich nun einen Referenz-Array auslesen und global verfügbar machen (ref[i]). Wenn ich den Vektor in der Prozedur deklariere funktioniert das auch einwandfrei und die Werte werden mir in der Memo-Box richtig angezeigt ... leider nur in der Prozedur.

thx4replies
  Mit Zitat antworten Zitat