Announcement

Collapse
No announcement yet.

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

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler im Delphi Code: End-Tag in RAD Studio XE3

    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

  • #2
    "wenn ich dann auf die Pfeiltaste mit dem roten Dingsda gehe (also Start (F9)), dann kommen zwei Fehler"

    Und? Bist du geneigt, diese mitzuteilen?

    Und auch welches "die letzte Zeile ist"? end?

    Ev. ist deine Programmstruktur falsch. es fehlt ein end oder ähnliches. Wenn du die Codeformatierung hier benutzt hättest, könnte man das prüfen
    Christian

    Comment


    • #3
      Hi, ich bin leider absoluter Anfänger und weiß nicht, wo ich eine FehlerBESCHREIBUNG lesen kann. Es kommt aber bei Drücken auf die Start F9 Taste folgende graue Box:

      Compilieren
      Projekt: \...\RAD Studio\Projekte\Project1.dproj
      Compilieren: Fehler sind aufgetreten
      Aktuelle Zeile: 0 <-- komisch, die gibt es bei mir gar nicht, das fängt mit 1 an und endet mit 61 (end Zeilen insgesamt: 0
      Hinweise: 0 Warnungen 2 Fehler: 2

      Dann gehe ich auf okay und dann wird die allerletzte Zeile end; rot

      Wie gesagt, ich programmiere erst seit wenigen Lernstunden (!). Kann das sein, dass Du DAS hier wissen willst, was unter Meldungen in RAD Studio XE3 steht?

      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.1

      oder brauchst Du was anderes, um zu helfen?

      Danke für Tipps.

      LG lusthansa

      Comment


      • #4
        [dcc32 Fehler] Beispiel2.pas(63): E2029 Deklaration erwartet, aber Dateiende gefunden
        ist der Fehler. Es sollte in Zeile 63 liegen.
        Christian

        Comment


        • #5
          Hallo, hast Du da konkrete Tipps, wie man das debuggen kann? Im Buch bin ich erst auf der Anfängerstufe. Diese besteht aus simplem Copy&Paste von Anweisungen aus dem eBook ins Entwicklungswerkzeug. Da gibt es dafür natürlich keine Debug-Tipps, da man prinzipiell autorenseitig scheinbar gar nicht von Fehlermöglichkeiten ausgeht. Gibt es vielleicht eine Disharmonie zwischen Buch "Delphi 7 Grundlagen und Kochbuch" von Doberenz et al. und der viel neueren Embarcadero RAD Studio XE3?

          LG Holger Rogoll

          Comment


          • #6
            Du kannst nur debuggen, wenn das Programm sich compilieren lässt und abläuft. Hier ist ein struktureller Fehler im Code (Kommentar nicht geschlossen, fehlendes end o.a). Sehe den aber jetzt auch nicht. Entferne mal den Quelltext IN der Prozedur und versuch dann zu compilieren
            Christian

            Comment


            • #7
              [highlight=pascal]
              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. // DIESES END scheint bei dir zu fehlen!
              [/highlight]

              Siehe Titel dieses Threads, der benennt meiner Meinung nach genau dein Problem: Das abschließende END der Unit fehlt.

              [dcc32 Fehler] Beispiel2.pas(63): E2029 Deklaration erwartet, aber Dateiende gefunden
              Eine Delphi - Unit hat immer den Aufbau
              [highlight=pascal]
              Unit Unit1;

              Interface
              // oeffentliche Deklarationen

              Implementation
              // Quellcode der Proceduren und Funktionen

              end. // schließt die Unit ab --> fehlt offensichtlich
              [/highlight]

              Viel Erfolg bei Lernen!
              Tino
              Ich habs gleich!
              ... sagte der Programmierer.

              Comment


              • #8
                Diskussion hier weiter: http://www.delphipraxis.net/173613-f...ml#post1206288

                Comment

                Working...
                X