![]() |
Bezeichner redefiniert + Deklaration?
Laut Delphi habe ich einige Bezeichner redefiniert und eine ungenügende Forward- oder External Deklaration bei den Prozeduren. Sieht von euch wer woran es liegt? :glaskugel: :wink:
Delphi-Quellcode:
unit uUnit2;
interface type TEinzelteile = record TNummer,Preis:integer; Bezeichnung,Verwendung:string[250]; end; TKundenstamm = record Name,Strasse,Ort:string[100]; Hausnummer,Postleitzahl:integer; end; Tearray=Array[0..999]of TEinzelteile; Tkarray=Array[0..999]of TKundenstamm; TFirma=class earray:Tearray; karray:Tkarray; fn:string[9]; Einzelteile:File of TEinzelteile; Einzelteile:TEinzelteile; Kundenstamm:File of TKundenstamm; Kundenstamm:TKundenstamm; procedure speichern(fn:string); procedure neu (fn:string); procedure oeffnen (fn:string); procedure schliessen; procedure vor; procedure zurueck; end; private { Private-Deklarationen } public { Public-Deklarationen } end; implementation {$R *.dfm} procedure oeffnen (fn:string)TFirma; begin fn:'Einzelteile.dat'; assignfile(Einzelteile,fn); if fileexists ('Einzelteile.dat') then reset(Einzelteile); Einzelteile.TNummer:=Edit1.Text; Einzelteile.Preis:=Edit2.Text; Einzelteile.Bezeichnung:=Edit3.Text; Einzelteile.Verwendung:=Edit4.Text; else ReWrite(Einzelteile); end; procedure neu (fn:string); begin fn:'Einzelteile.dat'; assignfile(Einzelteile,fn); seek(eof(einzelteile)); rewrite(Einzelteile); end; procedure speichern(fn:string); begin fn:'Einzelteile.dat'; assignfile(Einzelteile,fn); Einzelteile.TNummer:=inttostr(Edit1.Text); Einzelteile.Preis:=inttostr(Edit2.Text); Einzelteile.Bezeichnung:=Edit3.Text; Einzelteile.Verwendung:=Edit4.Text; write(Einzelteile,earray); end; procedure vor; begin seek(Einzelteile,filepos(Einzelteile)); Einzelteile.TNummer:=inttostr(Edit1.Text); Einzelteile.Preis:=inttostr(Edit2.Text); Einzelteile.Bezeichnung:=Edit3.Text; Einzelteile.Verwendung:=Edit4.Text; end; procedure zurueck; begin Seek(Einzelteile, FilePos(Einzelteile)-2); Einzelteile.TNummer:=inttostr(Edit1.Text); Einzelteile.Preis:=inttostr(Edit2.Text); Einzelteile.Bezeichnung:=Edit3.Text; Einzelteile.Verwendung:=Edit4.Text; end; procedure schliessen; begin CloseFile(Einzelteile); close end; end. |
Re: Bezeichner redefiniert + Deklaration?
Normalerweise sagt der Compiler auch welche und wo
Bei der Deklaration der Methoden ( nicht Prozeduren/Funktionen) fehlt die Angabe der Klasse |
Re: Bezeichner redefiniert + Deklaration?
Zitat:
Delphi-Quellcode:
usw. usf.
procedure TFirma.oeffnen (fn:string);
procedure TFirma.neu (fn:string);
Delphi-Quellcode:
Interessante Syntax? :gruebel:
fn:'Einzelteile.dat';
|
Re: Bezeichner redefiniert + Deklaration?
:-D
Tjaja der Wald vor lauter Bäumen :D Theoretisch gesehen müsste ich die gesamte fn Geschichte weglassen oder? :wink: |
Re: Bezeichner redefiniert + Deklaration?
Jein, ist ja ein Parameter der Methode. Oder willst du ihn als Defaultwert nehmen wenn nichts übergeben wird
|
Re: Bezeichner redefiniert + Deklaration?
Wenn das die komplette Unit ist, ist da sowieso ein Kuddelmuddel drin.
Du greifst auf Edit-Boxen zu, die es gar nicht gibt? |
Re: Bezeichner redefiniert + Deklaration?
ich würde die Datei überall Einzelteile.dat nennen und somit komplett auf fn verzichten.
Die Edit Boxen sind in Unit 1 :wink: |
Re: Bezeichner redefiniert + Deklaration?
Zitat:
|
Re: Bezeichner redefiniert + Deklaration?
Hier ist übrigens die Unit 1 ;)
Delphi-Quellcode:
unit uUnit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uUnit2, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button6Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin TFirma.neu; end; procedure TForm1.Button2Click(Sender: TObject); begin TFirma.oeffnen; end; procedure TForm1.Button4Click(Sender: TObject); begin TFirma.vor; end; procedure TForm1.Button5Click(Sender: TObject); begin TFirma.zurueck; end; procedure TForm1.Button3Click(Sender: TObject); begin TFirma.speichern; end; procedure TForm1.Button6Click(Sender: TObject); begin TFirma.schliessen; end; end. |
Re: Bezeichner redefiniert + Deklaration?
Mei, da fehlt es an Grundlagen. Du musst ein Objekt der Klasse nutzen und nicht die Klasse selbst, höchstens es sind Klassenmethoden.
Schau mal auf ![]() |
Re: Bezeichner redefiniert + Deklaration?
Moin, Moin, Bericender
wird das ganze etwas für die Schule oder sollte da ein praktischer Hintergrund vorhanden sein? Im zweiten Falle würde ich Dir DRINGEND zu einer Datenbank raten, da du so viel flexibler Arbeiten kannst. |
Re: Bezeichner redefiniert + Deklaration?
Wird etwas für die Schule und hab über Weihnachten nichts dran gemacht so das mir viele Sachen erstmal nicht mehr eingefallen sind :D (Ferien halt). Meine beiden Units sehen jetzt übrigens wie folgt aus ;)
Delphi-Quellcode:
unit uUnit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uUnit2, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button6Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Firma.neu; end; procedure TForm1.Button2Click(Sender: TObject); begin Firma.oeffnen(Edit1,2,3,4:TEdit); end; procedure TForm1.Button4Click(Sender: TObject); begin Firma.vor(Edit1,2,3,4:TEdit); end; procedure TForm1.Button5Click(Sender: TObject); begin Firma.zurueck(Edit1,2,3,4:TEdit); end; procedure TForm1.Button3Click(Sender: TObject); begin Firma.speichern(Edit1,2,3,4:TEdit); end; procedure TForm1.Button6Click(Sender: TObject); begin Firma.schliessen; end; end.
Delphi-Quellcode:
:wink:
unit uUnit2;
interface type TEinzelteile = record TNummer,Preis:integer; Bezeichnung,Verwendung:string[250]; end; TKundenstamm = record Name,Strasse,Ort:string[100]; Hausnummer,Postleitzahl:integer; end; Tearray=Array[0..999]of TEinzelteile; Tkarray=Array[0..999]of TKundenstamm; TFirma=class earray:Tearray; karray:Tkarray; Einzelteile:File of TEinzelteile; Einzelteile:TEinzelteile; Kundenstamm:File of TKundenstamm; Kundenstamm:TKundenstamm; procedure speichern(Edit1,2,3,4:TEdit); procedure neu; procedure oeffnen(Edit1,2,3,4:TEdit); procedure schliessen; procedure vor(Edit1,2,3,4:TEdit); procedure zurueck(Edit1,2,3,4:TEdit); procedure onCreate; end; private { Private-Deklarationen } public { Public-Deklarationen } end; var Firma : Tfirma; implementation {$R *.dfm} procedure onCreate; begin Firma := TFirma.create; end procedure oeffnen(Edit1,2,3,4:TEdit); begin assignfile(Einzelteile,'Einzelteile.dat'); if fileexists ('Einzelteile.dat') then reset(Einzelteile); Einzelteile.TNummer:=Edit1.Text; Einzelteile.Preis:=Edit2.Text; Einzelteile.Bezeichnung:=Edit3.Text; Einzelteile.Verwendung:=Edit4.Text; else ReWrite(Einzelteile); end; procedure neu; begin assignfile(Einzelteile,'Einzelteile.dat'); seek(eof(einzelteile)); rewrite(Einzelteile); end; procedure speichern(Edit1,2,3,4:TEdit); begin assignfile(Einzelteile,'Einzelteile.dat'); Einzelteile.TNummer:=inttostr(Edit1.Text); Einzelteile.Preis:=inttostr(Edit2.Text); Einzelteile.Bezeichnung:=Edit3.Text; Einzelteile.Verwendung:=Edit4.Text; write(Einzelteile,earray); end; procedure vor(Edit1,2,3,4:TEdit); begin seek(Einzelteile,filepos(Einzelteile)); Einzelteile.TNummer:=inttostr(Edit1.Text); Einzelteile.Preis:=inttostr(Edit2.Text); Einzelteile.Bezeichnung:=Edit3.Text; Einzelteile.Verwendung:=Edit4.Text; end; procedure zurueck(Edit1,2,3,4:TEdit); begin Seek(Einzelteile, FilePos(Einzelteile)-2); Einzelteile.TNummer:=inttostr(Edit1.Text); Einzelteile.Preis:=inttostr(Edit2.Text); Einzelteile.Bezeichnung:=Edit3.Text; Einzelteile.Verwendung:=Edit4.Text; end; procedure schliessen; begin CloseFile(Firma); close end; end. |
Re: Bezeichner redefiniert + Deklaration?
Ich bin Datenbanken auch sehr positiv geneigt. In diesem Fall ist es aber egal, da dem TE entwas die Grundlagen fehlen ( Unterschied Prozedur/Funktion <-> Methode usw). Hat er diese Lücken geschlossen, kann er sich überlegen ob Datenbanken etwas für ihn sind
{Edit: @Bericender: Wie wäre es unsere Verbesserungsvorschläge mal umzusetzen?] |
Re: Bezeichner redefiniert + Deklaration?
Gut, das ganze ist für die Schule, da ist die Art und Weise der Datenspeicherung vorgesehen.
Dann noch viel Spaß bei den strukturierten Datentypen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 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