Autor |
Beitrag |
TimHa
      
Beiträge: 88
|
Verfasst: So 24.04.05 16:19
Also, ich habe in meinem Programm eine Prozedur rechnen. Diese Prozedur hätte ich jetzt gerne in einer eigenen Unit (Uberechnen). Bin folgendermaßen vorgegangen:
Habe eine neue Unit angelegt. Im Implementationteil der Unit steht die Prozedur mit Variablendeklaration etc. im Interfaceteil habe ich den Prozeduraufruf stehen.
Im Hauptprogramm habe ich im Implementationteil uses Uberechnung; stehen.
Wenn ich das Programm starten will bekomme ich Fehler:
[Error] Uberechnung.pas(33): Undeclared identifier: 'showmessage'
Die Zeile zum Fehler lautet:
showmessage('Bitte geben Sie einen Wert größer 0 ein!');
Weiter unten kommt Fehler:
[Error] Uberechnung.pas(44): Undeclared identifier: 'form1'
Hier die Programmzeile:
val(form1.E_Die_Preis.Text, Die_Preis, code);
Als alles in einer Unit stand hat das Programm geklappt. Warum klappts jetzt nicht mehr? Für Hilfe wäre ich dankbar.
Tim
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: So 24.04.05 16:34
Bitte stell uns mal die Units zur Verfügung. So müsste man ja fst so was wie ne Telephondiagnose mache  n
|
|
TimHa 
      
Beiträge: 88
|
Verfasst: So 24.04.05 16:42
haupt
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154:
| unit Ukfzvergl;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls, ToolWin, Menus, Spin;
type TForm1 = class(TForm) StatusBar1: TStatusBar; Label1: TLabel; Label2: TLabel; E_All_Laufl: TEdit; Label3: TLabel; E_All_Nutzd: TEdit; GroupBox1: TGroupBox; GroupBox2: TGroupBox; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; E_Die_Preis: TEdit; E_Die_Steuer: TEdit; E_Die_Vers: TEdit; E_Die_Treibverb: TEdit; E_Die_Treibkost: TEdit; E_Ben_Preis: TEdit; E_Ben_Steuer: TEdit; E_Ben_Vers: TEdit; E_Ben_Treibverb: TEdit; E_Ben_Treibkost: TEdit; Timer1: TTimer; E_Die_Bez: TEdit; E_Ben_Bez: TEdit; Label10: TLabel; L_Ausg_Kos_Die: TLabel; L_Ausg_Kos_Ben: TLabel; Image1: TImage; MainMenu1: TMainMenu; N2: TMenuItem; Hilfe1: TMenuItem; N3: TMenuItem; ber1: TMenuItem; PrinterSetupDialog1: TPrinterSetupDialog; PrintDialog1: TPrintDialog; Datei1: TMenuItem; Neu1: TMenuItem; Drucken1: TMenuItem; Druckereinrichten1: TMenuItem; N1: TMenuItem; Beenden1: TMenuItem; procedure Timer1Timer(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure E_All_LauflKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Beenden1Click(Sender: TObject); procedure Drucken2Click(Sender: TObject); procedure ber1Click(Sender: TObject); procedure Label1Click(Sender: TObject); procedure Drucken1Click(Sender: TObject); procedure Druckereinrichten1Click(Sender: TObject); procedure Neu1Click(Sender: TObject);
private public end;
var Form1: TForm1;
implementation uses Uberechnung; {$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject); begin StatusBar1.Panels[0].Text:=datetostr(now); StatusBar1.Panels[1].Text:=timetostr(now); end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if key=',' then key:='.'; end;
procedure TForm1.E_All_LauflKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin rechnen(sender); end;
procedure TForm1.Beenden1Click(Sender: TObject); begin if application.MessageBox('Programm beenden?','Frage',36)=6 then close; end;
procedure TForm1.ber1Click(Sender: TObject); var button:integer; begin button:=application.messagebox ('KFZ Vergleich: Diesel oder Benziner' +#13 +#13 +'Programmiert von Tim Hauptmann (FSTE02)', 'Info',64); end;
procedure TForm1.Label1Click(Sender: TObject); begin printersetupdialog1.Execute; end;
procedure TForm1.Drucken1Click(Sender: TObject); begin printdialog1.Execute; end;
procedure TForm1.Druckereinrichten1Click(Sender: TObject); begin printersetupdialog1.Execute; end;
procedure TForm1.Neu1Click(Sender: TObject); begin form1.E_All_Laufl.Text:='1'; form1.E_All_Nutzd.Text:='1';
form1.E_Die_Preis.Text:='1'; form1.E_Die_Steuer.Text:='1'; form1.E_Die_Vers.Text:='1'; form1.E_Die_Treibverb.Text:='1'; form1.E_Die_Treibkost.Text:='1'; form1.E_Ben_Preis.Text:='1'; form1.E_Ben_Steuer.Text:='1'; form1.E_Ben_Vers.Text:='1'; form1.E_Ben_Treibverb.Text:='1'; form1.E_Ben_Treibkost.Text:='1';
form1.E_Die_Bez.Text:=''; form1.E_Ben_Bez.Text:='';
form1.L_Ausg_Kos_Die.Caption:=''; form1.L_Ausg_Kos_Ben.Caption:=''; end;
end. |
berechnung
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77:
| unit Uberechnung;
interface procedure rechnen(sender:tobject);
implementation procedure rechnen(sender:tobject); var laufl, nutzd:single; Die_Preis, Die_Steuer, Die_Treibkost, Die_Treibverb, Die_Vers, Die_Kosten, Die_Kfix, Die_Kvar:single; Ben_Preis, Ben_Steuer, Ben_Treibkost, Ben_Treibverb, Ben_Vers, Ben_Kosten, Ben_Kfix, Ben_Kvar:single; s,t:string; code:integer;
begin
if laufl=0 then begin showmessage('Bitte geben Sie einen Wert größer 0 ein!'); exit; end;
if nutzd=0 then begin showmessage('Bitte geben Sie einen Wert größer 0 ein!'); exit; end;
val(form1.E_Die_Preis.Text, Die_Preis, code); val(form1.E_Die_Steuer.Text, Die_Steuer, code); val(form1.E_Die_Treibkost.Text, Die_Treibkost, code); val(form1.E_Die_Treibverb.Text, Die_Treibverb, code); val(form1.E_Die_Vers.Text, Die_Vers, code);
Die_Kfix:=Die_Preis/nutzd+Die_Steuer+Die_Vers; Die_Kvar:=Die_Treibverb*Die_Treibkost/100; Die_Kosten:=(Die_Kfix+Die_Kvar*laufl)*nutzd;
str(Die_Kosten:10:2,s); form1.L_Ausg_Kos_Die.Caption:=s+' €'; val(form1.E_Ben_Preis.Text, Ben_Preis, code); val(form1.E_Ben_Steuer.Text, Ben_Steuer, code); val(form1.E_Ben_Treibkost.Text, Ben_Treibkost, code); val(form1.E_Ben_Treibverb.Text, Ben_Treibverb, code); val(form1.E_Ben_Vers.Text, Ben_Vers, code);
Ben_Kfix:=Ben_Preis/nutzd+Ben_Steuer+Ben_Vers; Ben_Kvar:=Ben_Treibverb*Ben_Treibkost/100; Ben_Kosten:=(Ben_Kfix+Ben_Kvar*laufl)*nutzd;
str(Ben_Kosten:10:2,t); form1.L_Ausg_Kos_Ben.Caption:=t+' €'; end;
end. |
Hoffe, so ist es klarer.
Mit ist beim Programmieren so viel unklar...
Tim
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: So 24.04.05 16:44
Hallo,
Ein uses name_der_unit_in_der_form1_deklariert_ist; im implementation-Teil Deiner Unit dürfte Abhilfe schaffen  (Wobei du für name_der_unit_in_der_form1_deklariert ist die entsprechende Unit einsetzt, in der Form1 deklariert ist  )
Warum das so ist: Du musst Delphi mitteilen, wo Form1 und ShowMessage deklariert sind. Und dazu genügt es, ihm einen Verweis auf deine Hauptunit mitzugeben, denn dort ist wahrscheinlich Form1 deklariert und über den Verweis auf die Unit Forms eine Verknüpfung zur Unit Dialogs gegeben, in der ShowMessage deklariert ist.
//edit: huch, du hast ja grad gepostet
Ersetze name_der_unit_in_der_form1_deklariert_ist oben einfach durch Ukfzvergl
Gruß,
raziel
_________________ JSXGraph
Zuletzt bearbeitet von raziel am So 24.04.05 16:46, insgesamt 1-mal bearbeitet
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: So 24.04.05 16:45
Schreib doch die Uberechnung ganz oben zu den anderen Units.
|
|
TimHa 
      
Beiträge: 88
|
Verfasst: So 24.04.05 16:57
raziel ,
danke für den Tipp. Der hat echt was gebracht. Mir sind selber noch zwei Fehler aufgefallen und dann hat es geklappt.
Immerhin etwas.
Muss dem Forum echt mal ein großes Lob aussprechen. Danke, dass ihr euch Zeit nehmt meine Probleme zu lösen!
Tim
|
|
|