AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Globales Array - Verständnisfrage

Ein Thema von Caleb · begonnen am 30. Nov 2010 · letzter Beitrag vom 1. Dez 2010
Antwort Antwort
Caleb

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

Globales Array - Verständnisfrage

  Alt 30. Nov 2010, 16:27
Hallo,

ich bin vor kurzem mit Delphi "konfrontiert" wurden und hab da mal eine Verständnisfrage.
Herr Google brachte mich nicht so richtig weiter ... ich gehe mal davon aus, dass es auch eine recht einfache Frage für euch ist =)

Nun zu meinem Problem:
Ich möchte 260 Werte in ein Array schreiben und dies in meiner Unit für all die anderen Pozeduren verfügbar machen. Dann geh ich mal davon aus, dass das in nem globalen Array am besten aufgehoben ist oder? Die Werte über die serielle Schnittstelle einlesen klappt auch wunderbar ... nur bekomme ich die Werte halt nur in meiner Prozedur und halt nicht global.

Ich habe dazu einen ähnlichen Ansatz gefunden ... http://www.w-hanisch.de/dokumente/De...0Hn%202010.pdf ... bei der die Problematik ähnlich gelöst wird (am PDF-Ende).

Wenn ich diesen Ansatz übernehme ...
Delphi-Quellcode:
{$R *.DFM}

ref: Array [0..260] Of Integer;

procedure TForm6.FormActivate(Sender: TObject);
.
.
.
... meckert der Compiler ständig an der Stelle *in x-beliebiger Prozedur* ...
Delphi-Quellcode:
for i:=0 to 260 do
   begin
      ref[i] := sp[i];
   end;
... mit Array-Typ erforderlich rum.

Ich freue mich freuen wenn ihr einem n00b wie mir helft.
thx4replies
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Globales Array - Verständnisfrage

  Alt 30. Nov 2010, 16:32
Wo und wie ist denn sp definiert?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Globales Array - Verständnisfrage

  Alt 30. Nov 2010, 16:35
ich weiß nicht was sp[i] ist, ob der Fehler von da kommt, in jedem Fall ist Dein Array nur in Form6 bekannt da Du es unterhalb von Implementation eingebaut hast.

Du kannst Arrays auch ganz normal als Variablen Deklarieren und Prozeduren mitgeben, am unkompliziertesten geht dies mit dynamischen Arrays.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.616 Beiträge
 
Delphi 12 Athens
 
#4

AW: Globales Array - Verständnisfrage

  Alt 30. Nov 2010, 17:19
Nebenbei bemerkt sind 0..260 dann 261 Werte
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
Caleb

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

AW: Globales Array - Verständnisfrage

  Alt 30. Nov 2010, 21:30
Nebenbei bemerkt sind 0..260 dann 261 Werte
Okay ... war im Eifer des Gefechts.

Wo und wie ist denn sp definiert?
An das Array, welches in der speziellen Prozedur deklariert ist, werden mir geparste Daten meiner seriellen Schnittstelle festgehalten. Wenn ich beide Arrays in der Prozedur deklariere, dann funktioniert das auch wie es soll. Nun brauch ich aber das ref[]-Array global für andere Prozeduren =/
Vielleicht schwer ausgedrückt ... ich schieb morgen früh gleich ein paar Zeilen Code nach.

ich weiß nicht was sp[i] ist, ob der Fehler von da kommt, in jedem Fall ist Dein Array nur in Form6 bekannt da Du es unterhalb von Implementation eingebaut hast.

Du kannst Arrays auch ganz normal als Variablen Deklarieren und Prozeduren mitgeben, am unkompliziertesten geht dies mit dynamischen Arrays.
ref[i] reicht mir vollkommen in Form6 aus. Die Array als Variablen den Prozeduren übergeben ... hmmm ... hab ich auch schon gedacht ... war damit aber leider ein wenig überfordert und dachte mir halt das es mit dem von mir gedachten Ansatz vielleicht noch am einfachsten funktioniert.

Ich danke jetzt schon für eure Antworten
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Globales Array - Verständnisfrage

  Alt 30. Nov 2010, 21:41
Man könnte Dir besser helfen wenn man nicht soviel raten müsste, Du also etwas mehr Code am Stück posten würdest.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Caleb

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

AW: Globales Array - Verständnisfrage

  Alt 30. Nov 2010, 21:47
Vielleicht schwer ausgedrückt ... ich schieb morgen früh gleich ein paar Zeilen Code nach.
Mach ich gern ... morgen früh =)
  Mit Zitat antworten Zitat
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
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: Globales Array - Verständnisfrage

  Alt 1. Dez 2010, 09:50
was mir auffällt 2* ref ???

Delphi-Quellcode:
var
ref: Array [0..260] Of Integer;


TForm6.Ref;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Caleb

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

AW: Globales Array - Verständnisfrage

  Alt 1. Dez 2010, 09:58
Autsch
thats it
Danke Bummi =)

btw: Schönes Forum
  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 00:10 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