AGB  ·  Datenschutz  ·  Impressum  







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

Temperatur Umrechner

Ein Thema von jens106 · begonnen am 21. Sep 2009 · letzter Beitrag vom 22. Sep 2009
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#41

Re: Temperatur Umrechner

  Alt 22. Sep 2009, 17:33
Also gut, für alle Fälle eine kleine Einweisung in Parameter (eigentlich: Argumente). Nehmen wir einmal folgende Funktionsdeklaration:
function MyFunc(const InputString: string; var InputInt: integer; out OutputDouble: double): Boolean; Diese Funktion erwartet 3 Argumente:
- einen String
- eine Integer
- eine Double
und gibt als Ergebnis Boolean zurück (also entweder true oder false). Alle 3 werden unterschiedlich gehandhabt. Das const vor InputString bedeutet, dass das Argument innerhalb der Funktion nicht geändert wird/werden soll. Das var vor InputInt bedeutet, dass das übergebene Argument innerhalb der Funktion ausgewertet und evtl. geändert werden kann. Das out vor OutputDouble bedeutet, dass das Argument innerhalb der Funktion nicht berücksichtigt, sondern als reines Ausgabeargument behandelt werden soll. Von allen 3 Argumenten wird innerhalb der Funktion keine lokale Kopie angelegt, da diese als Referenzen übergeben werden (call by reference). Anders verhält sich dies, wenn ein Argument ohne const, var oder out entgegegenommen wird. In diesem Fall wird mit einer lokalen Kopie des Wertes gearbeitet, das Original bleibt davon unberührt (call by value). Auch hierfür ein Beispiel:
Delphi-Quellcode:
procedure Proc1(InputInt: integer);
begin
  InputInt := 42;
end;

procedure Proc2(var InputInt: integer);
begin
  InputInt := 42;
end;

procedure TFormMain.TestProcs;
var MyInt: integer;
begin
  MyInt := 100;
  Proc1(MyInt); //call by value
  ShowMessage(IntToStr(MyInt)); //Ausgabe: 100
  Proc2(MyInt); //call by reference
  ShowMessage(IntToStr(MyInt)); //Ausgabe: 42
end;
Übrigens muss man wegen der evtl. Veränderlichkeit des Wertes bei var- und out-Parametern immer eine Variable deklarieren und diese übergeben. So würde sich dieser Aufruf nicht kompilieren lassen:
Delphi-Quellcode:
procedure TFormMain.TestProcs;
begin
  Proc2(42);
end;
Wieso dies? 42 ist eine Konstante, Proc2 erwartet aber eine Variable, da der Wert veränderlich sein soll, was eine Konstante ja nun einmal nicht ist.
Zum Schluss noch ein paar Worte zu überladenen Routinen und Default-Argumenten. Seit Delphi 4 kann man Routinen überladen, d.h. eine Routine mit dem selben Namen kann unterschiedlichste Argumente entgegennehmen. Das Einzige, was dabei zu beachten ist, ist, dass der Compiler klar unterscheiden können muss, welche Version denn nun gemeint ist. Auch dazu ein Beispiel:
Delphi-Quellcode:
function EineFunc(const s: string): Boolean; overload;
function EineFunc(const d: Double): Boolean; overload;
function EineFunc(const d: Double; var i: integer; const Bla: string='Wuppdi'): Boolean; overload;
Das Schlüsselwort "overload" kennzeichnet so eine überladene Routine und sagt Delphi, dass man das mit Absicht so macht und nicht etwa, weil man nicht aufgepasst hat . Wir können dieser Funktion entweder einen String, eine Double oder eine Double und eine Integer (plus ggf. einen String) übergeben. Durch die Eindeutigkeit ist sichergestellt, dass immer die richtige Version aufgerufen wird. In der 3. Version gibt es die Besonderheit mit dem vorbelegten String "Bla". Dieses Argument kann, muss aber nicht übergeben werden. Wird es nicht übergeben, nimmt die Funktion automatisch die Vorgabe (in diesem Fall "Wuppdi").

So, ich hoffe, das war ausführlich genug und ich habe keinen größeren Quatsch erzählt. Bei Fragen einfach noch einmal nachhaken.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jens106

Registriert seit: 18. Sep 2009
29 Beiträge
 
Delphi 7 Professional
 
#42

Re: Temperatur Umrechner

  Alt 22. Sep 2009, 18:26
Ich habe Matze's Beitrag nicht negativ gesehen. Hanz im Gegenteil... Er hat doch recht.

Jetzt aber noch ein Frage: Ich habe jetzt noch ein Funktion " in alles Umwandeln" hinzugefügt aber ich bekomme jetzt ganz ganz unter bei

procedure TForm1.FormCreate(Sender: TObject); Mehrere Fehler:

[Error] Unit1.dpr(308): Statement expected but 'PROCEDURE' found
[Warning] Unit1.dpr(318): Text after final 'END.' - ignored by compiler
[Fatal Error] mit_frage.dpr(5): Could not compile used unit 'Unit1.dpr'

Ich komme nach einer Stunde immernoch nicht dahinter, wo der Fehler ist. Aber wenn ich habe das Gefühl, dass irgendwo ein Semikolon oder ähnliches Fehlt.
Bevor ich die den letzten Teil (fänngt mit  //----Celsius--- an) "geschrieben" habe, kam deer Fehler noch nicht.

Woran kann das Blos liegen.

Hier der Ganze Quelltext (im moment noch ohne eine Try-Anweisung )
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var zahl, ergebnis : Real;
// var myFloat: Extended;
begin

// if TryStrToFloat('Zahl', myFloat) then
// ShowMessage(FloatToStr(myFloat))
// else
// ShowMessage('Ungültige Eingabe');

   zahl :=StrToFloat(Edit1.text);

   Label9.Caption := FloatToStr(zahl);
   // ------------------- Grad Celsius -----------------------------
   // Von C° auf K

   if ComboBox1.text='C° (Celsius)then
      begin
         if ComboBox2.text='K (Kelvin)then
            begin
               ergebnis:=zahl+273.15;
               Edit1.Text:= FloatToStr(ergebnis);
            end
         else
            begin
            end
       end
   else
      begin
      end;

   // Von C° auf Fahrenheit

   if ComboBox1.text='C° (Celsius)then
      begin
         if ComboBox2.text='F° (Fahrenheit)then
            begin
               ergebnis:=zahl*9/5+32;
               Edit1.Text:= FloatToStr(ergebnis);
            end
         else
            begin
            end
       end
   else
      begin
      end;

       // Von C° auf C°

   if ComboBox1.text='C° (Celsius)then
      begin
         if ComboBox2.text='C° (Celsius)then
            begin
               Edit1.Text:= 'Selbe Einheit';
            end
         else
            begin
            end
       end
   else
      begin
      end;

   // ------------------------- Ende Grad Celsius ---------------------------

   // ------------------------- Start Fahrenheit -----------------------------
   // Von F° auf K

   if ComboBox1.text='F° (Fahrenheit)then
      begin
         if ComboBox2.text='K (Kelvin)then
            begin
               ergebnis:=(zahl + 459.67) / 1.8;
               Edit1.Text:= FloatToStr(ergebnis);
            end
         else
            begin
            end
       end
   else
      begin
      end;

   // Von F° auf Fahrenheit

   if ComboBox1.text='F° (Fahrenheit)then
      begin
         if ComboBox2.text='F° (Fahrenheit)then
            begin
               Edit1.Text:= 'Selbe Einheit';
            end
         else
            begin
            end
       end
   else
      begin
      end;

       // Von C° auf C°

   if ComboBox1.text='F° (Fahrenheit)then
      begin
         if ComboBox2.text='C° (Celsius)then
            begin
               ergebnis:=(zahl - 32) / 1.8;
               Edit1.Text:= FloatToStr(ergebnis);
            end
         else
            begin
            end
       end
   else
      begin
      end;

   // -------------------------Ende Fahrenheit ---------------------------
   // ------------------------- Start Kelvin -----------------------------
   // Von F° auf K

   if ComboBox1.text='K (Kelvin)then
      begin
         if ComboBox2.text='K (Kelvin)then
            begin
               Edit1.Text:= 'Selbe Einheit';
            end
         else
            begin
            end
       end
   else
      begin
      end;

   // Von K° auf Fahrenheit

   if ComboBox1.text='K (Kelvin)then
      begin
         if ComboBox2.text='F° (Fahrenheit)then
            begin
               ergebnis:=zahl*1.8-459.67;
               Edit1.Text:= FloatToStr(ergebnis);
            end
         else
            begin
            end
       end
   else
      begin
      end;

       // Von K° auf C°

   if ComboBox1.text='K (Kelvin)then
      begin
         if ComboBox2.text='C° (Celsius)then
            begin
               ergebnis:=zahl-273.15;
               Edit1.Text:= FloatToStr(ergebnis);
            end
         else
            begin
            end
       end
   else
      begin
      end;

   // -------------------------Ende Kelvin ---------------------------
   // ------------------------ Alles Start -------------------------------
       //----Kelvin---

   if ComboBox1.text='K (Kelvin)then
      begin
         if ComboBox2.text='Alle (C° F° K)then
            begin

            Label5.Visible := True;
            Label6.Visible := True;
            Label7.Visible := True;

            // In Celsius umwandeln

               ergebnis:=zahl-273.15;
               Edit1.Text:= FloatToStr(ergebnis);

            // In Fahrenheit umwandeln

               Edit2.Visible := TRUE;
               ergebnis:=zahl*1.8-459.67;
               Edit2.Text:= FloatToStr(ergebnis);

            // In Kelvin umwandeln

               Edit3.Visible := TRUE;
               Edit3.Text:= 'Selbe Einheit';

   //----Fahrenheit---

   if ComboBox1.text='F° (Fahrenheit)then
      begin
         if ComboBox2.text='Alle (C° F° K)then
            begin

            Label5.Visible := True;
            Label6.Visible := True;
            Label7.Visible := True;

            // In Celsius umwandeln

               ergebnis:=(zahl - 32) / 1.8;
               Edit1.Text:= FloatToStr(ergebnis);

            // In Fahrenheit umwandeln

               Edit2.Visible := TRUE;
               Edit2.Text:= 'Selbe Einheit';


            // In Kelvin umwandeln

               Edit3.Visible := TRUE;
               ergebnis:=(zahl + 459.67) / 1.8;
               Edit3.Text:= FloatToStr(ergebnis);


   //----Celsius---

   if ComboBox1.text='C° (Celsius)then
      begin
         if ComboBox2.text='Alle (C° F° K)then
            begin

            Label5.Visible := True;
            Label6.Visible := True;
            Label7.Visible := True;

            // In Celsius umwandeln

               Edit2.Text:= 'Selbe Einheit';

            // In Fahrenheit umwandeln

               Edit2.Visible := TRUE;
               ergebnis:=zahl*9/5+32;
               Edit2.Text:= FloatToStr(ergebnis);


            // In Kelvin umwandeln

               Edit3.Visible := TRUE;
               ergebnis:=zahl+273.15;
               Edit3.Text:= FloatToStr(ergebnis);


            end
         else
            begin
            end
       end
   else
      begin
      end;

end;


procedure TForm1.FormCreate(Sender: TObject);
begin
   Edit2.Visible := FALSE;
   Edit3.Visible := FALSE;
   Label5.Visible := FALSE;
   Label6.Visible := FALSE;
   Label7.Visible := FALSE;
end;

end.
end;

end.
P.S.: danke DeddyH für deine ausführlich Erläuterung. Ich werde sie mir heute abend einmal gründlich durchlesen/studieren
  Mit Zitat antworten Zitat
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#43

Re: Temperatur Umrechner

  Alt 22. Sep 2009, 18:28
Hi, du hast nicht ganz unten,(ganz unten stimmts)
end. statt
end;
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
jens106

Registriert seit: 18. Sep 2009
29 Beiträge
 
Delphi 7 Professional
 
#44

Re: Temperatur Umrechner

  Alt 22. Sep 2009, 18:36
Delphi-Quellcode:
 else
      begin
      end;

end; // <-- muss hier ein . anstelle eines ; hin? so habe ich das verstanden. Aber ads klappt nicht.


procedure TForm1.FormCreate(Sender: TObject);
begin
   Edit2.Visible := FALSE;
   Edit3.Visible := FALSE;
   Label5.Visible := FALSE;
   Label6.Visible := FALSE;
   Label7.Visible := FALSE;
end;

end.
end;

end.
  Mit Zitat antworten Zitat
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#45

Re: Temperatur Umrechner

  Alt 22. Sep 2009, 18:39
nicht ganz:
bei Delphi darf end. nur ganz am ende einer Unit stehen, also folgendes:
Delphi-Quellcode:
else
      begin
      end;

end; // <-- Hier stimmts


procedure TForm1.FormCreate(Sender: TObject);
begin
   Edit2.Visible := FALSE;
   Edit3.Visible := FALSE;
   Label5.Visible := FALSE;
   Label6.Visible := FALSE;
   Label7.Visible := FALSE;
end;

end. // <-- Hier muss ein Semikolon hin, also end; statt end.
end;

end.
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
jens106

Registriert seit: 18. Sep 2009
29 Beiträge
 
Delphi 7 Professional
 
#46

Re: Temperatur Umrechner

  Alt 22. Sep 2009, 18:45
jo das war auch ein Fehler sehe ich gerade
aber der eigentlich Fehler besteht weiter hin.

Ich habe mal zur Veranschaulichung ein Screenshot gemacht
Miniaturansicht angehängter Grafiken
fehler_332.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#47

Re: Temperatur Umrechner

  Alt 22. Sep 2009, 18:48
Du hast zuviele Ends am Ende. Oder du hast die Prozedur in eine anderen reingeschrieben. Du solltest den Quelltext mal sauber einrücken und gucken, ob du zu jedem Begin; auch das passende End; hast.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
jens106

Registriert seit: 18. Sep 2009
29 Beiträge
 
Delphi 7 Professional
 
#48

Re: Temperatur Umrechner

  Alt 22. Sep 2009, 19:45
so jetzt erstmal ein großes Danke an alle die mir geholfen haben.

Aber jetzt kommt ein Problem, dass ich noch nie hatte. Wenn ich mein Projekt speichern will speichert der nur 3 dateien (auch keine exe) und wenn man die datei delphi projekt öffnen will kommen fehler meldungen

Was soll ich tun?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#49

Re: Temperatur Umrechner

  Alt 22. Sep 2009, 20:02
Zunächst könntest Du uns einmal sagen, welche Fehlermeldungen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jens106

Registriert seit: 18. Sep 2009
29 Beiträge
 
Delphi 7 Professional
 
#50

Re: Temperatur Umrechner

  Alt 22. Sep 2009, 20:18
hier sind 2 screenshots von den Fehlern und im Hintergrund die Daten die gespeichert wurden nachdem ich save projekt durchgeführt hat.
Miniaturansicht angehängter Grafiken
fehler2_211.jpg   fehler1_538.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 22:32 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