![]() |
AW: Proceduren erstellen
Leider war diese Lösung falsch, ich soll es mit private machen.
Doch nun bekomme ich sehr viele Fehler, erkennt einer warum, ohne dass ich die Fehler alle benenne?
Code:
unit Busanzeige1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm1 = class(TForm) ListBox1: TListBox; TLabel1: TLabel; TLabel2: TLabel; TLabel3: TLabel; TLabel4: TLabel; TLabel5: TLabel; Hinzufügen: TButton; alleLinien: TButton; Linie: TEdit; Ziel: TEdit; Ankunft: TEdit; Abfahrt: TEdit; Verspätung: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; bearbeiten: TButton; löschen: TButton; zehnAnzeigen: TButton; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Beenden: TBitBtn; procedure HinzufügenClick(Sender: TObject); procedure BeendenClick(Sender: TObject); procedure alleLinienClick(Sender: TObject); procedure löschenClick(Sender: TObject); procedure zehnAnzeigenClick(Sender: TObject); procedure bearbeitenClick(Sender: TObject); private type TBusEintrag = record Form1: TForm1; Liste: array of TBusEintrag; x: integer; AnkunftPlusVerspätung: TTime; procedure Delete; procedure Output(AnzahlEinträge:integer); procedure Sort; end; end; implementation {$R *.dfm} procedure TForm1.Delete; var i: integer; MakierteStelle: integer; begin //x bekommt den Wert der makierten Stelle for i := 0 to ListBox1.Count - 1 do if ListBox1.Selected[i] then begin MakierteStelle:=i; end; //Einträge in Array werden verschoben while MakierteStelle<high(Liste) do begin Liste[MakierteStelle]:=Liste[MakierteStelle+1]; x:=x+1; end; //Array wird um 1 verringert setLength(Liste,Length(Liste)-1); //Makierter Eintrag wird aus ListBox entfernt ListBox1.DeleteSelected; end; procedure TForm1.Output(AnzahlEinträge:integer); const MAX_TABS = 4; Tab = #9; var Tabulators: array[0..MAX_TABS] of Integer; StelleEintrag:integer; begin //Tabulatorweiten festlegen Tabulators[0] := 72; Tabulators[1] := 136; Tabulators[2] := 202; Tabulators[3] := 1; Tabulators[4] := 1; ListBox1.TabWidth := 1; //Tabulatoren setzen SendMessage(ListBox1.Handle, LB_SETTABSTOPS, MAX_TABS, Longint(@Tabulators)); //ListBox leeren ListBox1.clear; //Liste ausgeben StelleEintrag:=0; while ((StelleEintrag < length(Liste)) and (StelleEintrag<AnzahlEinträge)) do begin ListBox1.Items.Strings[StelleEintrag]:=' '+Liste[StelleEintrag].Linie+ Tab +Liste[StelleEintrag].Ziel+Tab+TimeToStr(Liste[StelleEintrag].Abfahrt+Liste[StelleEintrag].Verspätung)+' Uhr'+Tab+TimeToStr(Liste[StelleEintrag].Verspätung)+Tab+'h'; StelleEintrag:=StelleEintrag+1; end; end; procedure TForm1.Sort; var Eintrag:integer; begin if length(Liste)=0 then begin SetLength(Liste,1); end //suche Position für neuen Eintrag else begin while (AnkunftPlusVerspätung>(Liste[x].Ankunft+Liste[x].Verspätung)) and (x < length(Liste)) do begin x:=(x+1); end; //Array um 1 erweitern SetLength(Liste,length(Liste)+1); Eintrag:=(high(Liste)); //Einträge verschieben while (Eintrag>x) do begin Liste[Eintrag]:=Liste[(Eintrag-1)]; Eintrag:=(Eintrag-1); end; end; end; procedure TForm1.alleLinienClick(Sender: TObject); begin Output(length(Liste)); end; procedure TForm1.bearbeitenClick(Sender: TObject); var i:integer; MakierteStelle: integer; begin //x bekommt den Wert der makierten Stelle for i := 0 to listbox1.Count - 1 do if listbox1.Selected[i] then begin MakierteStelle:=i; end; //Makierte Linie wird in Editfelder eingetragen Linie.Text:= Liste[MakierteStelle].Linie; Ziel.Text:= Liste[MakierteStelle].Ziel; Ankunft.Text:= TimeToStr(Liste[MakierteStelle].Ankunft); Abfahrt.Text:= TimeToStr(Liste[MakierteStelle].Abfahrt); Verspätung.Text:= TimeToStr(Liste[MakierteStelle].Verspätung); Delete; end; procedure TForm1.BeendenClick(Sender: TObject); begin close; end; procedure TForm1.löschenClick(Sender: TObject); begin Delete; Output(10); end; procedure TForm1.zehnAnzeigenClick(Sender: TObject); begin Output(10); end; procedure TForm1.HinzufügenClick(Sender: TObject); begin try //Eingetragene Werte Variablen zuordnen x:=0; AnkunftPlusVerspätung:= (StrToTime(Ankunft.Text)+StrToTime(Verspätung.Text)); Sort; //neuen Eintrag in Array eintragen Liste[x].Linie:=Linie.Text;; Liste[x].Ziel:=Ziel.Text; Liste[x].Ankunft:=StrToTime(Ankunft.Text); Liste[x].Abfahrt:=StrToTime(Abfahrt.Text); Liste[x].Verspätung:=StrToTime(Verspätung.Text); Output(10); //Edit Felder leeren Linie.Clear; Ziel.Clear; Ankunft.Clear; Abfahrt.Clear; Verspätung.Clear; except showmessage('Bitte alle Felder ausfüllen oder korrekte Uhrzeit eingeben'); end; end; end. |
AW: Proceduren erstellen
Die Typdeklarationen haben im private-Abschnitt nichts zu suchen.
Delphi-Quellcode:
type
TNeuerTyp = (ntDies, ntDas); TForm1 = class(TForm) ... private procedure DoSomeWork; procedure DoOtherWork; end; |
AW: Proceduren erstellen
Nun habe ich es so, und trotzdem noch Fehler:
Code:
unit Busanzeige1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TBusEintrag = record Form1: TForm1; Liste: array of TBusEintrag; x: integer; AnkunftPlusVerspätung: TTime; TForm1 = class(TForm) ListBox1: TListBox; TLabel1: TLabel; TLabel2: TLabel; TLabel3: TLabel; TLabel4: TLabel; TLabel5: TLabel; Hinzufügen: TButton; alleLinien: TButton; Linie: TEdit; Ziel: TEdit; Ankunft: TEdit; Abfahrt: TEdit; Verspätung: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; bearbeiten: TButton; löschen: TButton; zehnAnzeigen: TButton; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Beenden: TBitBtn; procedure HinzufügenClick(Sender: TObject); procedure BeendenClick(Sender: TObject); procedure alleLinienClick(Sender: TObject); procedure löschenClick(Sender: TObject); procedure zehnAnzeigenClick(Sender: TObject); procedure bearbeitenClick(Sender: TObject); private procedure Delete; procedure Output(AnzahlEinträge:integer); procedure Sort; end; implementation {$R *.dfm} |
AW: Proceduren erstellen
Was soll denn genau zum Record gehören?
|
AW: Proceduren erstellen
Ahhh, danke..da ist mein Fehler...irgendwie sind meine Sachen vom Record verloren gegangen :!:
Jetzt schaff ich es alleine, danke schön :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 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