![]() |
Bekomm das mit den Records nicht hin?
Hallo
Ich möchte ein Programm zum CD suchen ect. schreiben. Das gerne mit dem Record cdtyp. Jetzt bin ich mir aber nicht ganz sicher wo ich das genau rein schreiben muss? Ich habe mal den bisherigen Quelltext unten drunter gestellt. Wenn ich es jetzt starten will kommt immer: Identifier not found "cdtyp" Error in type definition Identifier not found "cdtyp" Ich hab keine Idee wieso? Ich vermute ich habe das type irgendwie nicht ganz richtig da drinne Stehen?? unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } type cdtyp = record Interpret: string[20]; Titel:string[40]; Musikrichtung:string[20]; Spieldauer: integer; Jahr: integer; end; end; var Form1: TForm1; cd: array[1..100] of cdtyp; wahl : byte; index : integer; datei : file of cdtyp; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin index:=strtoint(Edit1.text); end; end. |
AW: Bekomm das mit den Records nicht hin?
Bitte nutzte die Delphi Tags für deinen Code.
Dein Problem ist Du hast cdtyp in deiner Form Klasse deklariert. D.h. du müsstest TForm1.cdtyp schreiben oder cdtyp nach dem end; von TForm1 verschieben. |
AW: Bekomm das mit den Records nicht hin?
Hallo
Ok super das hat geklappt. Ich schau mir mal an wie ich das machen muss mit dem Delphi Tags Jetzt hab ich aber das nächste Problem... procedure TForm1.Button1Click(Sender: TObject); begin index:=strtoint(Edit1.text); with cd[index] do Interpret:=Edit2.text; Titel:=Edit3.Text; Musikrichtung:=Edit4.text; Spieldauer:=inttostr(Edit5.text); Jahr:=inttostr(Edit6.text); end; was ist denn hier schon wieder falsch dranne? |
AW: Bekomm das mit den Records nicht hin?
Delphi-Tags kannst Du mit der "Helm"-Schaltfläche im Beitragseditor setzen oder indem Du Deinen Code in [ delphi][ /delphi] (ohne die Leerzeichen) einschließt. Zum Problem: da fehlt wohl ein begin und ein end.
|
AW: Bekomm das mit den Records nicht hin?
Wo denn?
Unter dem with?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); begin index:=strtoint(Edit1.text); with cdtyp[index] do Interpret:=Edit2.text; Titel:=Edit3.Text; Musikrichtung:=Edit4.text; Spieldauer:=inttostr(Edit5.text); Jahr:=inttostr(Edit6.text); end; |
AW: Bekomm das mit den Records nicht hin?
Ja. With würde ich an Deiner Stelle sowieso gleich wieder aus meinem Wortschatz verbannen, da es keinen echten Mehrwert bringt, das Debuggen aber unnötig erschwert. Was spricht denn gegen
Delphi-Quellcode:
:?:
var
CurrentTyp: cdtyp; //Typen beginnen überlicherweise mit einem T, also wäre TCDTyp besser begin index:=strtoint(Edit1.text); CurrentTyp := cd[index]; CurrentTyp.Interpret:=Edit2.text; CurrentTyp.Titel:=Edit3.Text; CurrentTyp.Musikrichtung:=Edit4.text; CurrentTyp.Spieldauer:=inttostr(Edit5.text); CurrentTyp.Jahr:=inttostr(Edit6.text); end; |
AW: Bekomm das mit den Records nicht hin?
ja mir wäre das auch egal aber unser Lehrer will nur bestimmt sachen immer akzeptieren...
|
AW: Bekomm das mit den Records nicht hin?
Deddyh, du hast vergessen, den Inhalt der tmp Variable wieder zurück ins Array zu kopieren :!:
|
AW: Bekomm das mit den Records nicht hin?
Es ging mir ja auch mehr um die Syntax ohne das blöde "with".
|
AW: Bekomm das mit den Records nicht hin?
Hallo
bin jetzt nen Programm weiter und neues Problem...
Delphi-Quellcode:
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs; type { TForm1 } TForm1 = class(TForm) procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; type TZiel = record Ort: String; Preis: real; end; type TZielliste = record Ziele: array[1..100] of TZiel; ZielZahl: integer; end; TZielFile = file of TZiel; var Form1: TForm1; ZielListe: TZielliste; ZielFile: TZielfile; I: integer; implementation {$R *.lfm} { TForm1 } procedure ZieleErfassen(var Liste: ZielListe); begin with Liste do begin Ziele[1].Ort:='Dresden'; Ziele[1].Preis:=16.00; with Ziele[2] do begin Ort := 'Berlin'; Preis := 43.00; end; with Ziele[3] do begin Ort :='Aachen'; Preis := 155.00; end; ZielZahl :=3; end; end; begin ZieleErfassen(ZielListe); Assign(Zielfile, 'C:\Users\Notebook\Desktop\ziele.dat'); Rewrite(Zielfile); with ZielListe do for I := 1 to ZielZahl do write(ZielFile, Ziele[I]); Close(ZielFile); end; end. Wo ist denn jetzt schon wieder der Fehler? Irgendwie weiß ich nicht so recht wo das TZielFile = file of TZiel hin muss? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 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