AGB  ·  Datenschutz  ·  Impressum  







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

was ist falsch an MessageDlg

Ein Thema von Nikodel · begonnen am 3. Sep 2020 · letzter Beitrag vom 4. Sep 2020
Antwort Antwort
Nikodel

Registriert seit: 11. Jan 2019
20 Beiträge
 
Delphi XE4 Professional
 
#1

was ist falsch an MessageDlg

  Alt 3. Sep 2020, 17:26
hi,
ich stehe vor einem Rätsel:
In folgendem Programm erhalte ich Fehlermeldungen:
Code:
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
  System.IOUtils, System.Variants, FMX.Types, FMX.Controls, FMX.Forms,
  FMX.Dialogs, FMX.StdCtrls, FMX.Edit, FMX.ListBox, FMX.Layouts;

type
  TForm1 = class(TForm)
    Butt_start: TButton;
    Butt_newName: TButton;
    Butt_deleteName: TButton;
    NameList: TListBox;
    ListBoxGroupHeader_active: TListBoxGroupHeader;
    ListBoxGroupHeader_inactive: TListBoxGroupHeader;
    Edit1: TEdit;
    Butt_change_aktiv: TButton;
    procedure Butt_down(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    procedure Butt_up(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
      X, Y: Single);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  buttPress: boolean;
  hP: array[0..10] of integer;
  nact: integer;

implementation

{$R *.fmx}

procedure TForm1.FormCreate(Sender: TObject);
var
  F: Text;
  dstr: string;
  i, ii: integer;
begin
  dstr := TPath.GetDirectoryName(ParamStr(0));
  try
    AssignFile(F, dstr + '\NameList.txt');
    Reset(F);
    ReadLn(F, nact); { Read the first line of the file }
    for i := 1 to nact do
    begin // aktive Namen einlesen und auflisten
      ReadLn(F, dstr); { Read Names }
      NameList.Items.Insert(i, dstr); { insert Name }
      ii := i;
    end;
    while not Eof(F) do
    begin // inaktive Namen einlesen und auflisten
      ReadLn(F, dstr);
      inc(ii);
      NameList.Items.Insert(ii + 1, dstr);
    end;
    CloseFile(F);

    // nact := NameList.Items.IndexOf('heute nicht dabei:');
    if nact > 0 then
      Edit1.Text := 'Die Liste enthält ' + IntToStr(nact) + ' aktive und ' +
        IntToStr(NameList.Count - nact - 2) + ' inaktive Namen'
    else
      Edit1.Text := 'Die Datei enthält keine Namen!';

    Edit1.Text := Edit1.Text + ' ' + ParamStr(0);
  except
    MessageDlg('NameList.txt existiert nicht!', mtError, [mbOK], 0);
  end;

end;
Die Zeile ganz am Ende
Zitat:
MessageDlg('NameList.txt existiert nicht!', mtError, [mbOK], 0);
ergibt bereits im Editor die Fehlermeldungen "Undeklarierter Bezeichner 'mtError'" und Undeklarierter Bezeichner 'mbOK'.
Beim Compilieren heißt es außerdem:
[dcc32 Fehler] Unit1.pas(119): E2250 Es gibt keine überladene Version von 'MessageDlg', die man mit diesen Argumenten aufrufen kann (die Zeilennummer 119 passt hier nicht, weil ich einigen Code hier weggelassen habe).

Beispielcode aus dem Help sieht genau so aus.

Was ist nun falsch?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: was ist falsch an MessageDlg

  Alt 3. Sep 2020, 17:45
Bei FMX brauchen viele ENUMs einen Scope.
siehe Delphi-Referenz durchsuchenSCOPEDENUMS http://docwiki.embarcadero.com/RADSt...Enums_(Delphi)

TType.EnumName statt nur EnumName.
Oder du hast vergessen eine Unit einzubinden.
Im FMX wurden einige Typen verschoben, wobei an der alten stelle ein Alias steht, wo aber die EnamNamen anders weitergeleitet werden, womit sie über die "alte" Unit ohne Scop genutzt werden können.

Zitat:
E2250 Es gibt keine überladene Version von
Sowas kann auch kommen, wenn man einen gleichnamigen, aber "anderen" und somit falschgen Typen/Enum/Konstante/... aus einer anderen Unit dort im Gültigkeitsbereich liegen hat, wo die beiden Typen aber nicht kompatibel sind.
$2B or not $2B
  Mit Zitat antworten Zitat
Gyrospeter

Registriert seit: 11. Apr 2019
49 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: was ist falsch an MessageDlg

  Alt 4. Sep 2020, 10:46
Bei uses statt FMX.Dialogs mal Vcl.Dialogs ausprobieren?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: was ist falsch an MessageDlg

  Alt 4. Sep 2020, 11:40
Bei uses statt FMX.Dialogs mal Vcl.Dialogs ausprobieren?
In einem FMX-Projekt?
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: was ist falsch an MessageDlg

  Alt 4. Sep 2020, 12:31
Bei FMX brauchen viele ENUMs einen Scope.
So issues.

  MessageDlg('NameList.txt existiert nicht!', TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], 0);
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: was ist falsch an MessageDlg

  Alt 4. Sep 2020, 12:35
Nur hat das mit FMX nicht unbedingt was zu tun, das "ScopedEnums ON" kommt ja schon direkt aus der System.UITypes .
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: was ist falsch an MessageDlg

  Alt 4. Sep 2020, 13:19
Das {$ScopedEnums} hat auf das Einfluss, was danach/darunter definiert wurde, nicht wo es verwendet wird.
Es legt einfach nur fest, ob die Namen der Enum-Werte auch öffentlich/global/einzeln freigegeben werden.

Was aber noch fehlt. wäre dass man die ENUMs auch über den Namen/Scope des SETs aufrufen kann.
Weil hab ich 'ne SET-Variable, dann kann ich den Typen der Variable sehen, aber muß mir denno den Namen des zugrundeliegenden ENUM-Typen raussuchen.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: was ist falsch an MessageDlg

  Alt 4. Sep 2020, 13:50
Nur hat das mit FMX nicht unbedingt was zu tun, das "ScopedEnums ON" kommt ja schon direkt aus der System.UITypes .
Hast recht - dass man das bei VCL noch herkömmlich nutzen kann, liegt an den Aliasen bzw consts, die in Vcl.Dialogs definiert sind - z.B.

mtError   = System.UITypes.TMsgDlgType.mtError;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: was ist falsch an MessageDlg

  Alt 4. Sep 2020, 14:22
Im FMX wurden einige Typen verschoben, wobei an der alten stelle ein Alias steht, wo aber die EnamNamen anders weitergeleitet werden, womit sie über die "alte" Unit ohne Scop genutzt werden können.

Wobei, ScopedEnum und Prefix ist aber auch eine Unart.

Es wäre auch schön, dass wenn das Ziel definitiv fest steht (z.B. da der Parameter/Property nur diesen Typ zulässt, dass man dort den Scope implizit einfach weglassen könnte. Schade das sowas niemand in den Compiler einbauen will.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: was ist falsch an MessageDlg

  Alt 4. Sep 2020, 14:57
Warning: MessageDlg is deprecated. Dafür nun MessageDialogAsync verwenden.
Gruß vom KodeZwerg
  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 17:01 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