![]() |
AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
Was im geposteten Quelltext außer dem finalen "end." in der Unit noch fehlt, ist die Zuweisung der EditKeyUp-Prozedur an die jeweiligen OnKeyUp-Events der drei Edit-Felder:
Delphi-Quellcode:
Ohne diese Zuweisungen kann das ganze nicht wie beabsichtigt funktionieren.
procedure TForm1.FormCreate(Sender: TObject);
begin Edit1.OnKeyUp := EditKeyUp; Edit2.OnKeyUp := EditKeyUp; Edit3.OnKeyUp := EditKeyUp; // außerdem wäre sehr empfehlenswert: Edit1.Text := ''; Edit2.Text := ''; Edit3.Text := ''; end; |
AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
Zitat:
|
AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
Hallo, ich habe mal folgendes getippt:
Delphi-Quellcode:
Also mit end. end.
unit Beispiel2;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Button1: TButton; Edit3: TEdit; Label3: TLabel; procedure EditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Form1.Close end; procedure TForm1.EditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); var kurs, euro, dollar: Single; // Variablen, mit denen gerechnet wird s: string; code: Integer; // Hilfsvariablen begin // Werte aus Editierfeldern in Variablen einlesen und prüfen: Val(Form1.Edit1.Text, kurs, code); // Kurs einlesen if code <> 0 then Exit; Val(Form1.Edit2.Text, euro, code); // Euro einlesen if code <> 0 then Exit; Val(Form1.Edit3.Text, dollar, code); // Dollar einlesen if code <> 0 then Exit; // Berechnungen mit den Variablen durchführen: if Sender = Edit3 then euro := dollar * kurs // dollar wurde eingegeben else dollar := euro / kurs; // euro oder kurs wurden eingegeben // Werte der Variablen in den Editierfeldern anzeigen: if Sender = Edit3 then // dollar geändert begin Str(euro:8:2,s); Form1.Edit2.Text := s; // Anzeige von euro (8 Stellen, // davon 2 Nachkomma) end else // kurs oder euro geändert begin Str(dollar:8:2,s); Form1.Edit3.Text := s; // sonst Anzeige von dollar end. end. Da kommt der Compilerfehler: Abhängigkeiten des Projekts werden überprüft... Compilieren von Project1.dproj (Debug, Win32) dcc Befehlszeile für "Project1.dpr" c:\program files (x86)\embarcadero\rad studio\10.0\bin\dcc32.exe -$O- -$W+ --no-config -M -Q -TX.exe -AGenerics.Collections=System.Generics.Collections; Generics.Defaults=System.Generics.Defaults;WinType s=Windows;WinProcs=Windows;DbiTypes=BDE; DbiProcs=BDE;DbiErrs=BDE -DDEBUG -E.\Win32\Debug -I"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\debug\DE";"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\debug";"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\release\DE";"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\release";"\\psf\Home\Documen ts\RAD Studio\10.0\Imports";"c:\program files (x86)\embarcadero\rad studio\10.0\Imports";"C:\Users\Public\Documents\RA D Studio\10.0\Dcp";"c:\program files (x86)\embarcadero\rad studio\10.0\include" -LE"C:\Users\Public\Documents\RAD Studio\10.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\10.0\Dcp" -N0.\Win32\Debug -NSWinapi;System.Win;Data.Win; Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;X ml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touc h;Vcl.Samples;Vcl.Shell; -O"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\release";"\\psf\Home\Documen ts\RAD Studio\10.0\Imports";"c:\program files (x86)\embarcadero\rad studio\10.0\Imports";"C:\Users\Public\Documents\RA D Studio\10.0\Dcp";"c:\program files (x86)\embarcadero\rad studio\10.0\include" -R"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\release\DE";"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\release"; "\\psf\Home\Documents\RAD Studio\10.0\Imports";"c:\program files (x86)\embarcadero\rad studio\10.0\Imports";"C:\Users\Public\Documents\RA D Studio\10.0\Dcp";"c:\program files (x86)\embarcadero\rad studio\10.0\include" -U"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\debug\DE";"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\debug";"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\release\DE";"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\release";"\\psf\Home\Documen ts\RAD Studio\10.0\Imports";"c:\program files (x86)\embarcadero\rad studio\10.0\Imports";"C:\Users\Public\Documents\RA D Studio\10.0\Dcp";"c:\program files (x86)\embarcadero\rad studio\10.0\include" -V -VN -NB"C:\Users\Public\Documents\RAD Studio\10.0\Dcp" -NH"C:\Users\Public\Documents\RAD Studio\10.0\hpp" -NO.\Win32\Debug Project1.dpr [dcc32 Warnung] Beispiel2.pas(55): W1057 Implizite String-Umwandlung von 'ShortString' zu 'string' [dcc32 Warnung] Beispiel2.pas(59): W1057 Implizite String-Umwandlung von 'ShortString' zu 'string' [dcc32 Fehler] Beispiel2.pas(60): E2018 Record, Objekt oder Klassentyp erforderlich [dcc32 Fehler] Beispiel2.pas(61): E2029 ';' erwartet, aber '.' gefunden [dcc32 Fehler] Beispiel2.pas(63): E2029 Deklaration erwartet, aber Dateiende gefunden [dcc32 Fataler Fehler] Project1.dpr(5): F2063 Verwendete Unit 'Beispiel2.pas' kann nicht compiliert werden Misslungen Verstrichene Zeit: 00:00:00.3 Hat jemand hier im Forum zufällig RAD Studio XE3 und kann den Code bei sich einfügen? Dann wäre das vielleicht leichter für die Thread-TeilnehmerInnen, meine Problematik zu verstehen! LG lusthansa |
AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
Hallo lusthansa,
fast haste es :) eine Prozedure wird syntaktisch so aufgebaut
Delphi-Quellcode:
Eine Unit bekommt
proecedure Name;
begin end;
Delphi-Quellcode:
Also ergibt sich:
unit name
interface implementation end.
Delphi-Quellcode:
Also einmal
unit name
interface implementation proecedure Name; begin end; end.
Delphi-Quellcode:
für das ende der Prozedur und am ende der Unit immer ein
end;
Delphi-Quellcode:
end.
[EDIT] Tipp: Du solltest deinen Code Einrücken/Formatieren sonst hängst du ganz schnell bei nächsten Problemen fest! Gruß |
AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
Zitat:
|
AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
Ich setze es auch grundsätzlich, auch wenn vor einem
Delphi-Quellcode:
keines notwendig wäre. Denn oft erweitert man einen Block und dann ist es notwendig.
end
|
AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
Zitat:
LG lusthansa |
Windows 7 und Delphi 7
Hallo, ich habe bei Embarcadero angerufen. Der Techniker hat mich gefragt, was ich für eine Workstation mit Betriebssystem habe.
was ich noch nicht gesagt habe: Ich habe einen MacBook Pro mit Parallels Desktop 7 und darauf läuft auf der virtuellen Maschine Windows 7 Home Premium 64 bit. Der Techniker meinte: Das kann auch nicht funktionieren, ich bräuchte Windows XP - "Windows 7 und Delphi 7 - das beißt sich" (Zitat Techniker). Was ist da dran? Ich will ja das Programm nur testweise laufen lassen mit der Start-Taste - die fertige .exe oder was immer daraus auch wird - ist mir eigentlich egal - Hauptsache keine Fehler ... brauche ich jetzt ein neues OS?? lg lusthansa |
AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
Delphi-Quellcode:
So sollte es gehen.
unit Beispiel2;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Button1: TButton; Edit3: TEdit; Label3: TLabel; procedure EditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Form1.Close end; procedure TForm1.EditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); var kurs, euro, dollar: Single; // Variablen, mit denen gerechnet wird s: string; code: Integer; // Hilfsvariablen begin // Werte aus Editierfeldern in Variablen einlesen und prüfen: Val(Form1.Edit1.Text, kurs, code); // Kurs einlesen if code <> 0 then Exit; Val(Form1.Edit2.Text, euro, code); // Euro einlesen if code <> 0 then Exit; Val(Form1.Edit3.Text, dollar, code); // Dollar einlesen if code <> 0 then Exit; // Berechnungen mit den Variablen durchführen: if Sender = Edit3 then euro := dollar * kurs // dollar wurde eingegeben else dollar := euro / kurs; // euro oder kurs wurden eingegeben // Werte der Variablen in den Editierfeldern anzeigen: if Sender = Edit3 then // dollar geändert begin Str(euro:8:2,s); Form1.Edit2.Text := s; // Anzeige von euro (8 Stellen, // davon 2 Nachkomma) end else // kurs oder euro geändert begin Str(dollar:8:2,s); Form1.Edit3.Text := s; // sonst Anzeige von dollar end; end; end. Edit: Hatte ein "end;" vergessen. Korrigiert. |
AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
Zitat:
Was für den Compiler redundant ist, schafft m.E. in solchen Fällen auch für den Leser keinen informationellen Mehrwert. Ich kann jedenfalls - als Hobbyprogrammierer! - keine Leseerschwernis beim Fehlen überflüssiger Semikola bemerken. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 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