Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Fehler im Delphi-Code ganz am Ende beim Kompilieren (https://www.delphipraxis.net/173613-fehler-im-delphi-code-ganz-am-ende-beim-kompilieren.html)

lusthansa 7. Mär 2013 05:30

Delphi-Version: XE2

Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Hallo, ich habe die Entwicklungsumgebung Embarcadero RAD XE3. Das kann man in der Auswahl nicht einstellen. Ich habe einen 30tägigen Test. Ich bin Student und muss mir selber Delphi beibringen. Sonst kann ich kein Praktikum machen. Ich habe mir auf http://www.amazon.de/Borland-Delphi-...dp_ob_image_bk das Hanser-Buch dazu gekauft. Ich bin gerade in Kapitel 1.3.2 Einführungsbeispiel für Umsteiger ... da soll man einen Währungsumrechner programmieren. Das Programm macht man gar nicht selber, man kopiert aus dem Ebook nur den Quellcode und fügt ihn zwischen begin und end in eine Unit ein. Wenn ich das mache, dann kommt bei mir folgender Code raus:

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;

wenn ich dann auf die Pfeiltaste mit dem roten Dingsda gehe (also Start (F9)), dann kommen zwei Fehler. Wenn ich dann auf OK gehe, wird die letzte Zeile in rot markiert angezeigt. Wie muss ich es richtig machen und warum?

Danke und Gruß, Lusthansa

DonManfred 7. Mär 2013 06:29

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von lusthansa (Beitrag 1206261)
Delphi-Quellcode:
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

Da sich der Code in einem begin-end-Block befindet muss jeder Befehl mit einem Semikolon abgeschlossen sein.

also ":= s;"

pHL 7. Mär 2013 06:41

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Hallo,

also ich brauch kein abschließendes Semikolon in einem begin - end solange sich nur eine Anweisung darin befindet.

Ich glaub eher dass das abschließende "end." fehlt.

MfG.

Edit: Sry hab übersehen dass es ja 2 Anweisungen sind also stimmt das mit dem Semikolon :)

Angel4585 7. Mär 2013 06:43

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Das müsste eig an der Stelle auch ohne semikolon gehen.
Mach doch oben mal Delphi-TAGS um den Quellcode damit man den lesen kann.
Wenn Fehler kommen, wird auch ne Fehlermeldung dazu angezeigt. Wie lautet diese Meldung?

Edit: Normalerweise benötigt die letzte Zeile vor einem End kein Semikolon. Ich tippe auch eher auf das "end." also mit Punkt am Ende

lusthansa 7. Mär 2013 06:49

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von DonManfred (Beitrag 1206265)

Da sich der Code in einem begin-end-Block befindet muss jeder Befehl mit einem Semikolon abgeschlossen sein.

also ":= s;"

Hallo, DonManfred, das habe ich gemacht. Jetzt sieht der Quellcode so aus:

Delphi-Quellcode:
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;
Es gibt bei Start F9 weiterhin den Fehler:

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(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

Es scheint an was anderem zu liegen

lusthansa 7. Mär 2013 06:50

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von pHL (Beitrag 1206267)
Edit: Sry hab übersehen dass es ja 2 Anweisungen sind also stimmt das mit dem Semikolon :)

Ich habe mal end. statt end; geschrieben, das hilft auch nicht weiter

lusthansa 7. Mär 2013 06:53

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von Angel4585 (Beitrag 1206269)
Mach doch oben mal Delphi-TAGS um den Quellcode damit man den lesen kann.

Was sind denn Delphi-Tags? (Bin totaler Anfänger). Der Code steht doch bereits im Forum drin. Ist er bei Dir unlesbar?

LG lusthansa

Sir Rufo 7. Mär 2013 06:54

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von lusthansa (Beitrag 1206277)
Zitat:

Zitat von pHL (Beitrag 1206267)
Edit: Sry hab übersehen dass es ja 2 Anweisungen sind also stimmt das mit dem Semikolon :)

Ich habe mal end. statt end; geschrieben, das hilft auch nicht weiter

Es fehlt am Ende noch ein
Delphi-Quellcode:
end.
(laut Compilermeldung)

Und bitte, bitte benutze die
Code:
[CODE]
[/CODE] und
Code:
[DELPHI][/DELPHI]
Tags

Delphi-Laie 7. Mär 2013 06:54

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von DonManfred (Beitrag 1206265)
Da sich der Code in einem begin-end-Block befindet muss jeder Befehl mit einem Semikolon abgeschlossen sein.

Das ist falsch - wir sind hier nicht im C++-Builder!

Diesen Unfug, daß generell hinter jeder Anweisung ein Semikolon zu setzen sei, las ich sogar schon in einem Delphi-Buch. Woher das stammt, ist mir unklar (aus anderen Programmiersprachen?). Auch Quellcodes quellen in der Regel von diesen überflüssigen Semikola über.

Nicht jeder Befehl muß mit einem Semikolon abgeschlossen werden, sondern es müssen nur zwischen den Befehlen ("Anweisungen") welche stehen. Da "end" keine Anweisung innerhalb dieses Blockes mehr ist, kann eben das letzte Semikolon entfallen.

Zumindest ist es bis Delphi XE2 so. Kaum anzunehmen, daß ab XE3 die vielen überflüssigen Semikola plötzlich nötig sind.

Bummi 7. Mär 2013 06:55

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
nicht STATT, zusätzlich ein end.

ASM 7. Mär 2013 07:24

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:
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;
Ohne diese Zuweisungen kann das ganze nicht wie beabsichtigt funktionieren.

Delphi-Laie 7. Mär 2013 07:28

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von ASM (Beitrag 1206288)
...
// außerdem wäre sehr empfehlenswert:
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
end;[/DELPHI]

Ohne diese Zuweisungen kann das ganze nicht wie beabsichtigt funktionieren.

Läßt sich doch einfach im Objektinspektor "einnullen".

lusthansa 7. Mär 2013 07:33

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Hallo, ich habe mal folgendes getippt:

Delphi-Quellcode:
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.
Also mit 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

angos 7. Mär 2013 07:37

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Hallo lusthansa,

fast haste es :)

eine Prozedure wird syntaktisch so aufgebaut

Delphi-Quellcode:
proecedure Name;
begin
end;
Eine Unit bekommt

Delphi-Quellcode:
unit name

interface

implementation

end.
Also ergibt sich:
Delphi-Quellcode:
unit name

interface

implementation

  proecedure Name;
  begin
  end;
end.
Also einmal
Delphi-Quellcode:
end;
für das ende der Prozedur und am ende der Unit immer ein
Delphi-Quellcode:
end.

[EDIT] Tipp: Du solltest deinen Code Einrücken/Formatieren sonst hängst du ganz schnell bei nächsten Problemen fest!

Gruß

cookie22 7. Mär 2013 07:43

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1206280)
Das ist falsch - wir sind hier nicht im C++-Builder!

Diesen Unfug, daß generell hinter jeder Anweisung ein Semikolon zu setzen sei, las ich sogar schon in einem Delphi-Buch. Woher das stammt, ist mir unklar (aus anderen Programmiersprachen?). Auch Quellcodes quellen in der Regel von diesen überflüssigen Semikola über.

Nicht jeder Befehl muß mit einem Semikolon abgeschlossen werden, sondern es müssen nur zwischen den Befehlen ("Anweisungen") welche stehen. Da "end" keine Anweisung innerhalb dieses Blockes mehr ist, kann eben das letzte Semikolon entfallen.

Zumindest ist es bis Delphi XE2 so. Kaum anzunehmen, daß ab XE3 die vielen überflüssigen Semikola plötzlich nötig sind.

Die "überflüssigen" Semikola setzt man der besseren Lesbarkeit wegen. ;)

mkinzler 7. Mär 2013 07:53

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Ich setze es auch grundsätzlich, auch wenn vor einem
Delphi-Quellcode:
end
keines notwendig wäre. Denn oft erweitert man einen Block und dann ist es notwendig.

lusthansa 7. Mär 2013 08:01

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von angos (Beitrag 1206292)
Also einmal
Delphi-Quellcode:
end;
für das ende der Prozedur und am ende der Unit immer ein
Delphi-Quellcode:
end.

[EDIT] Tipp: Du solltest deinen Code Einrücken/Formatieren sonst hängst du ganz schnell bei nächsten Problemen fest!

Gruß

Danke für die allg. Tipps. Aber das hilft auch nichts. Ich bekomme jetzt 3 Fehler. Ich rufe gleich mal Embarcadero Deutschland an und frage nach Hilfe und poste die hier.

LG lusthansa

lusthansa 7. Mär 2013 08:08

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

Angel4585 7. Mär 2013 08:10

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Delphi-Quellcode:
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.
So sollte es gehen.
Edit: Hatte ein "end;" vergessen. Korrigiert.

Delphi-Laie 7. Mär 2013 08:14

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von cookie22 (Beitrag 1206294)
Die "überflüssigen" Semikola setzt man der besseren Lesbarkeit wegen. ;)

Klar doch, wo doch das end gewöhnlicherweise in der nächsten Zeile steht?! Damit sind beide doch schon optisch getrennt!

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.

Angel4585 7. Mär 2013 08:17

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
[OT]
Ich hatte bisher auch keine Probleme damit, wenn ein Semikolon gefehlt hat.
Eher wenn welche zuviel da waren. Durfte ich im Studium bei einigen Kommilitonen schon korrigieren.
Delphi-Quellcode:
while(count < 20);
  begin
  Inc(Count);
  end;
Kommilitone: "Mimimimimi das geht nicht"
Naja aber jetz BTT.
[/OT]

mkinzler 7. Mär 2013 08:18

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Dann lass am Besten alle Leerzeichen und Zeielschaltungen weg. Unit-, Typen- und Variablennamen dann auch so kurz wie möglich halten. Denn das ist alles überflüssig und redundant.

lusthansa 7. Mär 2013 08:21

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von Angel4585 (Beitrag 1206301)
So sollte es gehen.
Edit: Hatte ein "end;" vergessen. Korrigiert.

Es geht :-)

Ich kniee nieder in Dankbarkeit vor allen Helfern ;-)

Frage: ist das jetzt ein Problem von:

mir
vom (falschen) Buch
von der lt. Embarcadero komischen Kombination Delphi 7 auf Windows 7 und NICHT auf Windows XP
von der RAD Studio XE 3 Entwicklungsumgebung ein noch ungefixter Bug?

Muss ich jetzt immer bei jedem Programmvorschlag aus dem Buch mehr Code hinzufügen im Sinne von mehr "ends" oder ist das individuell?

LG lusthansa

mkinzler 7. Mär 2013 08:22

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Einfach pro
Delphi-Quellcode:
begin
ein
Delphi-Quellcode:
end;
und am Schluß ein
Delphi-Quellcode:
end.

DeddyH 7. Mär 2013 08:24

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Crosspost DT

ASM 7. Mär 2013 08:28

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1206289)
Zitat:

Zitat von ASM (Beitrag 1206288)
...
// außerdem wäre sehr empfehlenswert:
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
end;[/DELPHI]

Ohne diese Zuweisungen kann das ganze nicht wie beabsichtigt funktionieren.

Läßt sich doch einfach im Objektinspektor "einnullen".

Mit meinem Hinweis meine ich selbstverständlich nicht diese Zuweisungen "Edit1.Text := '';" etc., sondern die voranstehenden, aber von Dir nicht zitierten Zuweisungen der Events. Sollte doch eigentlich aus dem Kontext klar genug gewesen sein.

Und hinsichtlich "einnullen" im Objektinspektor:
Richtig. Aber zum einen kann man hier nicht sehen, was er wo im Objektinspektor eingetragen hat, oder nur vermuten, was zwar vielleicht schon, aber möglicherweise eben doch nicht (immerhin ist ja alles neu für ihn); zum anderen ziehe ich es aus mehrfachen Gründen vor, solche initialen Einträge an Textzuweisungen grundsätzlich in der Unit selbst zu deklarieren. Insbesondere bei Editfeldern, da deren Inhalt ja ausdrücklich zur Laufzeit variabel editierbar sein soll. Die Frage, wo man was entsprechend machen kann, ist allerdings hier in diesem Topic auch gar nicht das Problem.

tinof 7. Mär 2013 11:30

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Zitat:

Zitat von DeddyH (Beitrag 1206312)

und hier
Entwicklerforum: Fehler im Delphi Code: End-Tag in RAD Studio XE3

Sorry, aber das nervt! Morgen ist wohl Deadline, oder?

Tino

angos 7. Mär 2013 12:13

AW: Windows 7 und Delphi 7
 
Zitat:

Zitat von lusthansa (Beitrag 1206299)
[...] 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? [...]

Jein. Ich habe D7 sowohl auf Win7 als auch Win 8 (beides 64bit) ans Laufen bekommen. Man sollte aber nicht im Programme-Ordner oder einem anderen der virtuellen Ordner installieren. Dann funktioniert das auch



Gruß

SubData 7. Mär 2013 12:21

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Delphi 7 funktioniert auf Win 7 sogar recht einfach. Nicht auf die Systemplatte packen und als Administrator ausführen.
Ok, als Admin ausführen ist nicht immer unbedingt zu empfehlen, macht die Software aber relativ schnell lauffähig.

Der schöne Günther 7. Mär 2013 12:40

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Ich habe Delphi 6 neulich noch einmal unter Win7 laufen lassen müssen. Soweit ich mich erinner kann, muss es nur für den allerersten Programmstart einmal mit Administratorrechten ausgeführt werden, danach nicht mehr.

Windows wird zwar immer der Meinung sein, dass "bekannte Kompatibilitätsprobleme" bestehen, aber die Meldung lässt sich ja dauerhaft wegklicken.

SubData 7. Mär 2013 12:42

AW: Fehler im Delphi-Code ganz am Ende beim Kompilieren
 
Das funktioniert bei mir leider nicht, mag aber noch andere Gründe haben (Systemkomponenten, etc...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 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