Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Type global definieren (https://www.delphipraxis.net/10494-type-global-definieren.html)

Pseudemys Nelsoni 19. Okt 2003 20:39


Type global definieren
 
hoi,

ich bekomme es irgendwie nur hin lokale typen zu schreiben...wo kommen sie global hin?
unter dem bereits bestehenden type ganz am anfang? da bekomme ich nur fehler wie "end fehlt" etc

himitsu 19. Okt 2003 20:41

Re: Type global definieren
 
wie definierst du diese denn?

Pseudemys Nelsoni 19. Okt 2003 20:42

Re: Type global definieren
 
Delphi-Quellcode:
Type TZahlen = '0'..'9';

CalganX 19. Okt 2003 20:45

Re: Type global definieren
 
Hi,
das ist doch global. ;)
Außer du definierst den Typen innerhalb einer Funktion. ;)

Chris

Pseudemys Nelsoni 19. Okt 2003 20:48

Re: Type global definieren
 
wenn ich das was ich eben schrieb hier rein mache:

Delphi-Quellcode:
type
  TForm2 = class(TForm)
  Type TZahlen = '0'..'9';
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Panel1: TPanel;
    Button1: TButton;
    Panel2: TPanel;
    Button2: TButton;
    IdHTTP1: TIdHTTP;
    IdAntiFreeze1: TIdAntiFreeze;
    StatusBar1: TStatusBar;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
oder so:

Delphi-Quellcode:
type
  TForm2 = class(TForm)
  TZahlen = '0'..'9';
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Panel1: TPanel;
    Button1: TButton;
    Panel2: TPanel;
    Button2: TButton;
    IdHTTP1: TIdHTTP;
    IdAntiFreeze1: TIdAntiFreeze;
    StatusBar1: TStatusBar;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

dann funktioniert es nichtmehr

himitsu 19. Okt 2003 20:50

Re: Type global definieren
 
Hast es vieleicht an der Falschen Stelle eingefügt.

Hier 2 Möglichkeiten:
Delphi-Quellcode:
Unit Unit1;

Interface
  Uses ...

  Type TForm1 = Class(TForm)
      ...
      Procedure Button1Click(Sender: TObject);
    Private
      ...
    Public
      ...
    End;
  TZahlen1 = '0'..'9';

  Var Form1: TForm1;

Implementation
  {$R *.dfm}

  Type TZahlen2 = '0'..'9';

  Procedure TForm1.Button1Click(Sender: TObject);
    Begin
      ...
    End;

End.

Pseudemys Nelsoni 19. Okt 2003 20:51

Re: Type global definieren
 
ahh, danke, dachte die gehören ganz oben mit hin weil da schonmal type steht :D

himitsu 19. Okt 2003 20:54

Re: Type global definieren
 
Man kann keinen Type innerhalb eines anderen definieren.

Pseudemys Nelsoni 19. Okt 2003 20:57

Re: Type global definieren
 
ok ^^.

btw:

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
Type TZahlen = '0'..'9';
     Zahl = Set Of TZahlen;
var
  sl1: TStringList;
  s: string;
  laufVar: integer;
  Zahlen: Zahl;
begin
  if (Edit1.Text <> '') AND (length(Edit1.Text) > 2) then
  begin
    if (Edit2.Text <> '') AND (length(Edit2.Text) > 2) AND not (edit2.Text[1] in Zahlen) then
    begin
      if length(Edit3.Text) > 7 then
      begin
        Button1.Enabled := false;
        Button2.Enabled := false;
        for laufVar := 1 to 4 do
        TEdit(FindComponent('Edit' + InttoStr(LaufVar))).Enabled := false;
        StatusBar1.Panels[0].Text := 'Trying to register nick...';
        sl1 := TStringList.Create;
        sl1.Add('name=' + Edit1.Text);
        sl1.Add('nick=' + Edit2.Text);
        sl1.Add('pass=' + Edit3.Text);
        sl1.Add('cpass=' + Edit3.Text);
        sl1.Add('email=' + Edit4.Text);
        sl1.Add('cemail=' + Edit4.Text);
        s := idhttp1.Post('http://www.cncreloaded.net/index.php?action=signup', sl1);
        sl1.Free;
        if Pos('The nickname you have chosen is already in use. Please select another.', s) > 0 then
        begin
          ShowMessage('The nickname you have chosen is already in use. Please select another.');
          Edit2.Font.Color := clRed;
        end;
        Button1.Enabled := true;
        Button2.Enabled := true;
        for laufVar := 1 to 4 do
        TEdit(FindComponent('Edit' + InttoStr(LaufVar))).Enabled := true;
        StatusBar1.Panels[0].Text := '';
      end
      else
      begin
        ShowMessage('Your password must be exactly 8 characters in length.');
        Edit3.Font.Color := clRed;
      end;
    end
    else
    ShowMessage('You must specify a nickname, and it must be greater than or equal to 3 characters long.');
  end
  else
  ShowMessage('You must specify a name, and it must be greater than or equal to 3 characters long.');
end;
das funktioniert einwandfrei
find ich aber doof das ich ein neuen typ definieren musste, wenn ich "Zahl = Set Of Byte" nehme funktioniert es nichtmehr(lässt sich aber kompilieren), dann trifft die if anweisung nichtmehr zu...wieso das? byte ist doch auch ne zahl 0..255 oder nicht?

Pseudemys Nelsoni 19. Okt 2003 21:07

Re: Type global definieren
 
ich seh gerade das nichtmal das geht, super ...

Delphi-Quellcode:
if (Edit2.Text <> '') AND (length(Edit2.Text) > 2) AND not (edit2.Text[1] in Zahlen)
^^^^^^^das trifft nicht zu obwohl edit2 100% ne 1 am anfang ha -_-

himitsu 19. Okt 2003 21:10

Re: Type global definieren
 
Schreib einfach statt "(edit2.Text[1] in Zahlen)" das "(edit2.Text[1] in ['0'..'9'])"

Pseudemys Nelsoni 19. Okt 2003 21:11

Re: Type global definieren
 
jo, danke=)

gibts nen grund dafür das meins nicht ging?

himitsu 19. Okt 2003 21:25

Re: Type global definieren
 
Ich glaub da spielt uns mal wieder die Codeoptimierung des Compilers einen Streich.

Denn das geht
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Type TZahlen = '0'..'9';
  Zahl = Set Of TZahlen;
var Zahlen: Zahl;
  S: String;
begin
  S := '4561456';
  if S[1] in Zahlen then Beep; {*}
  Caption := S;                {*}
end;
das auch
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Type TZahlen = '0'..'9';
  Zahl = Set Of TZahlen;
var Zahlen: Zahl;
  S: String;
begin
  S := '4561456';
  if S[2] in Zahlen then Beep; {*}
end;
aber das nicht
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Type TZahlen = '0'..'9';
  Zahl = Set Of TZahlen;
var Zahlen: Zahl;
  S: String;
begin
  S := '4561456';
  if S[1] in Zahlen then Beep; {*}
end;

Pseudemys Nelsoni 19. Okt 2003 21:26

Re: Type global definieren
 
jo das ist ja das komische lol

Hansa 19. Okt 2003 22:20

Re: Type global definieren
 
Zitat:

Zitat von silent
jo das ist ja das komische lol

Das ist wieder ein Äpfel/Birnen Problem. 8)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Type TZahlen = '0'..'9'; // was soll das ?
  Zahl = Set Of TZahlen; // besser einfach SET OF byte/char
var Zahlen: Zahl;
  S: String;
begin
  Zahlen := ['0'..'9']; // <-------  Menge wurde nicht initialisiert
  S := '4561456';       // was soll das S ? hat mit Typ nichts zu tun
  if '2' in Zahlen then
    showmessage ('gefunden')
  else
    showmessage ('nicht gefunden');
end;

end.

Pseudemys Nelsoni 19. Okt 2003 22:21

Re: Type global definieren
 
Delphi-Quellcode:
Type TZahlen = '0'..'9'; // was soll das ? 
  Zahl = Set Of TZahlen; // besser einfach SET OF byte/char

ich hätte auch byte/char genommen, aber es geht nicht, teste selbst

Hansa 19. Okt 2003 22:30

Re: Type global definieren
 
Zitat:

Zitat von silent
Ich hätte auch byte/char genommen, aber es geht nicht, teste selbst

Habe ich jetzt doch tatsächlich gemacht. Kein Problem.

Pseudemys Nelsoni 20. Okt 2003 15:03

Re: Type global definieren
 
kein problem?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Type
  TZahlen = Set Of byte;
var
  Zahlen: TZahlen;
begin
  if 9 in Zahlen then
  ShowMessage('ja')
  else ShowMessage('nö');
end;

wieso kommt dann bei 9 "ja" und bei 8 "nö" ?

Hansa 20. Okt 2003 16:46

Re: Type global definieren
 
Zitat:

Zitat von silent
...wieso kommt dann bei 9 "ja" und bei 8 "nö" ?

Das habe ich weiter oben bereits gesagt. Würd ich mir mal ansehen, sonst wird das nie was. 8)

Pseudemys Nelsoni 20. Okt 2003 16:56

Re: Type global definieren
 
ich sehs nicht, hilf mir mal nach pls

Hansa 20. Okt 2003 16:59

Re: Type global definieren
 
Meinst du da wäre überhaupt noch was zu machen ? :mrgreen: Letzter Beitrag auf erster Seite. 8)

Pseudemys Nelsoni 20. Okt 2003 18:22

Re: Type global definieren
 
Zitat:

<------- Menge wurde nicht initialisiert
meinst du das?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:56 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-2025 by Thomas Breitkreuz