![]() |
AW: Warteschlange realisieren
Du brauchst weder MySchlange noch MyRec als private Felder oder globale Variablen. Nochmal in der Zusammenfassung (Implementation von TSchlange ausgelassen):
Delphi-Quellcode:
So einfach kann das sein.
type
Tperson = record Name:string; id:integer; end; Tschlange = class private next,max:integer; schlange : array [1..10] of tperson; public function einfuegen(x:tperson):boolean; constructor create; end; TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } (* FSchlange gehört jetzt dem Formular und ist auch nur von dem zu erreichen *) FSchlange: TSchlange; public { Public declarations } end; //... procedure TForm1.FormCreate(Sender: TObject); begin (* Instanz anlegen *) FSchlange := TSchlange.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin (* Instanz freigeben*) FSchlange.Free; end; procedure TForm1.Button1Click(Sender: TObject); var MyRec: TPerson; begin MyRec.Name := Edit1.Text; MyRec.id := StrToInt(Edit2.Text); FSchlange.einfuegen(MyRec); end; |
AW: Warteschlange realisieren
Vielen Dank :
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type Tperson = record Name:string; id:integer; end; Tschlange = class private next,max:integer; schlange : array [1..10] of tperson; public function einfuegen(x:tperson):boolean; constructor create; end; TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } FSchlange : Tschlange; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} constructor tschlange.create; begin next :=10; max := 10; end; function tschlange.einfuegen(x: tperson):boolean; var i:integer; begin //hinter dem Array kann man nichts mehr einfügen Result := Next >0; if Result then begin //Daten an aktuelle Array-Position schreiben schlange[Next].Name := x.Name; schlange[Next].Id := x.id; //Position abziehen dec(Next); end else // wenn next = 0 ist begin for i:=9 downto 1 do schlange[i+1]:=schlange[i]; end; end; procedure TForm1.Button1Click(Sender: TObject); var MyRec:Tperson; begin myrec.Name := edit1.text; myrec.id := strtoint(edit2.text); Fschlange.einfuegen(myrec); end; procedure TForm1.FormCreate(Sender: TObject); begin Fschlange := Tschlange.create; end; procedure TForm1.FormDestroy(Sender: TObject); begin Fschlange.Free; end; end. Jetzt ist es semantisch und syntaktisch korrekt , oder ? Das heißt , ich kann jetzt 10 Sachen in ein Array mit 10 Feldern reinhauen , oder ? |
AW: Warteschlange realisieren
Wirf den Compiler an und probier es aus. Abgesehen davon, dass Du vergessen hast, in der einfuegen-Methode nach dem Aufrücken noch die neuen Daten einzutragen, ist mir jetzt nichts mehr aufgefallen.
|
AW: Warteschlange realisieren
Hab es compiliert , passt alles.
Das andere mache ich erstmal jetzt später , hab keine Power mehr , Gehirn ist müde xD. Vielen vielen Dank an alle und besonders an dich DeddyH , tut mir Leid , ich bin noch ein Anfänger , ich übe aber fleißig :D Das war eine Warteschlange , bald kommt der Kellerspeicher , ich hoffe , da wirst du mir wieder helfen. Schönen Tag noch an alle ! :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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