![]() |
was ist falsch an MessageDlg
hi,
ich stehe vor einem Rätsel: In folgendem Programm erhalte ich Fehlermeldungen:
Code:
Die Zeile ganz am Ende
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; Zitat:
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? |
AW: was ist falsch an MessageDlg
Bei FMX brauchen viele ENUMs einen Scope.
siehe ![]() ![]() 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:
|
AW: was ist falsch an MessageDlg
Bei uses statt FMX.Dialogs mal Vcl.Dialogs ausprobieren?
|
AW: was ist falsch an MessageDlg
Zitat:
|
AW: was ist falsch an MessageDlg
Zitat:
Delphi-Quellcode:
MessageDlg('NameList.txt existiert nicht!', TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], 0);
|
AW: was ist falsch an MessageDlg
Nur hat das mit FMX nicht unbedingt was zu tun, das "ScopedEnums ON" kommt ja schon direkt aus der
Delphi-Quellcode:
.
System.UITypes
|
AW: was ist falsch an MessageDlg
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. |
AW: was ist falsch an MessageDlg
Zitat:
Delphi-Quellcode:
mtError = System.UITypes.TMsgDlgType.mtError;
|
AW: was ist falsch an MessageDlg
Zitat:
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. |
AW: was ist falsch an MessageDlg
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 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 by Thomas Breitkreuz