Autor Beitrag
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Mo 19.12.11 16:46 
Ja, innerhalb der Form. Das würde ich aber nicht "global" nennen. Diese Vorgehensweise ist (je nach Einsatzzweck) durchaus legitim.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19321
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 19.12.11 16:48 
user profile icontetris84 hat folgendes geschrieben Zum zitierten Posting springen:
Aber ist es dann nicht trotzdem noch Global in der Form aufrufbar?
Ja, innerhalb des Formulars kann man das so sehen. Aber anders geht es nicht. Und Sachen für die aktuelle Klasse (sprich hier das Formular) im private-Abschnitt zu deklarieren ist normal.

Zudem sollten ggf. andere Teile ebenfalls in Klassen und Units gekapselt werden. Insofern ist es ja nicht wirklich global, sondern nur für diesen Teil der GUI global. Aus anderen Units kommst du ja z.B. nicht heran. ;-)
tetris84 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Mo 19.12.11 17:05 
Nachdem ich es mal in Private geschrieben hab kommt der Fehler "Undeklarierter Bezeichner" Was habe ich falsch gemacht?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19321
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 19.12.11 20:21 
Dass deine Prozedur nicht zum Formular gehört vielleicht?

Sonst zeig mal den Quelltext dazu, raten ist nicht so gut...
tetris84 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Mo 19.12.11 21:13 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
private
    { Private declarations }

  type
    TStelle=record
      Vorhanden : boolean;
      Stückzahl:String;
    end;
    TArray = array [0..100of TStelle;

var Verkauf : TArray;

public
    { Public declarations }
  end;

procedure Pruefen ();
Begin
    Verkauf[55].Vorhanden := true;
End;


Zuletzt bearbeitet von tetris84 am Mo 19.12.11 21:30, insgesamt 1-mal bearbeitet
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 19.12.11 21:26 
Die Variable heißt Verkauf, aber du versuchst, über Array darauf zuzugreifen. Das wird die Fehlermeldung auslösen.

Außerdem halte ich es für verwirrend, einen Typ namens TArray zu deklarieren, der 101 Records aufnehmen kann. Wenn du einen solchen Typ tatsächlich öfter brauchst, solltest du ihn entsprechend benennen. Ansonsten kannst du ihn auch direkt bei der Variablendeklaration angeben:

ausblenden Delphi-Quelltext
1:
var Verkauf: array[0..100of TStelle					
tetris84 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Mo 19.12.11 21:28 
Ne das war jetzt nur son kleines Beispiel. Das ist so mein Quelltext in Kurzform.
Inklusive diesem Fehler. Der ist im echten Programm nicht. Hab die Variablen nämlich einfach nur in private kopiert.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19321
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 19.12.11 23:22 
user profile icontetris84 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
procedure Pruefen ();
Begin
Da hatte ich ja Recht. ;-)
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dass deine Prozedur nicht zum Formular gehört vielleicht?
Mach daraus eine Methode des Formulars, dann klappt das auch.

Das ist ja genau der Sinn darin, die Variable als privates Feld zu deklarieren. Du kommst dann eben auch nur aus dem Formular und dessen Methoden heran.