![]() |
Form1 und Form2, vermutlich Initialisierungsfehler
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bin immer noch bei meiner Bus Anzeigetafel ^^
Aber jetzt nicht mehr mit Pointern, sonder Klassen. Nun sieht mein Programm ungefähr so aus. Form 1 = Die Tafel Form 2 = Eingabe der Linien Unit 1 = Anzeige (hinzufügen, sortieren etc. im Array) Unit 2 = Bus (Eingaben werden in Uhrzeit etc. umgewandelt) Aber mir geht es hauptsächlich um Form 1 und 2. Form 2 besitzt die Edit Felder zum Eintragen der Linie, Ankunft etc.. Diese Werte sollen dann an Form 1 weiter gegeben werden. Soweit so gut, doch dies klappt leider nicht. Bestimmt liegt es an der Initialisierung ^^ Da es zu viel wäre den kompletten Code zu schreiben, hänge ich meine Datei an und poste den Codeabschnitt zur Initialisierung. Achja, zum Fehler...so wie es jetzt ist, wird immer nur der Anfangs-String von den Edit-Feldern an Form1 gegeben...
Delphi-Quellcode:
Und hier möchte ich die Eingetragenen werte benutzen:
unit Busanzeige1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Anzeige, Eingabe; type TForm1 = class(TForm) ListBox1: TListBox; alleLinien: TButton; bearbeiten: TButton; loeschen: TButton; zehnAnzeigen: TButton; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Beenden: TBitBtn; Hinzufuegen: TButton; newEntry: TButton; procedure newEntryClick(Sender: TObject); procedure BeendenClick(Sender: TObject); procedure alleLinienClick(Sender: TObject); procedure loeschenClick(Sender: TObject); procedure zehnAnzeigenClick(Sender: TObject); procedure bearbeitenClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure HinzufuegenClick(Sender: TObject); private Anzeige: TAnzeige; Eingabe : TForm2; procedure Output(LaengeListe:integer); end; Var Form1 : TForm;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin //Anzeige Inizialisieren Anzeige:= TAnzeige.Create; Eingabe:= TForm2.Create(Eingabe); end; procedure TForm1.HinzufuegenClick(Sender: TObject); begin //Eingetragene Werte an Array anhängen Anzeige.Add(Eingabe.ELinie.Text,Eingabe.EZiel.Text, Eingabe.EAnkunft.Text,Eingabe.EAbfahrt.Text,Eingabe.EVerspaetung.Text); //Array nack Ankunft+Verspätung sortieren Anzeige.QuickSort(0,(Anzeige.outLaengeListe-1)); //Liste mit Länge 10 ausgeben Output(10); //Edit Felder leeren Eingabe.ELinie.Clear; Eingabe.EZiel.Clear; Eingabe.EAnkunft.Clear; Eingabe.EAbfahrt.Clear; Eingabe.EVerspaetung.Clear; end; |
AW: Form1 und Form2, vermutlich Initialisierungsfehler
Schon ein ganz kleiner Blick verrät das Problem. :roll:
Delphi-Quellcode:
Fällt dir was auf?
Eingabe:= TForm2.Create(Eingabe);
... Form2.Visible := true; Du erstellst eine Form und greifst dann auf eine ganz andere Variable zu. Und genau deswegen sind globale Variablen schnell mal eine ganz böse Sache. Eine Form läßt du dir von Delphi (siehe DPR / Projektoptionen) erstellen, eine andere Form erstellst du dir selber und dann kommst du durcheinander und graufst auf die falsche Variable zu. PS: Den selben Fehler hatte hier shconmal jemand ... dieser ließ sich eine Form mehrfach von Delphi erstellen, wobei die erste angezeigt wurde, da sie die Hauptform wurde und da alle die selbe "globale" Variable überschrieben, war auch nur die Letzte dort verlinkt. Über die Variable war also eine andere Form erreichbar, als der Benutzer sah, weswegen natürlich die Benutzereingaben nie im Programm verwendet wurden. Tipp: Wenn du Forms selber erstellst, lösche die globale Variable einfach aus der PAS raus (und natürlich nicht vorher vergessen Delphi mitzuteilen, daß es diese Form nicht automatisch, bei Programmstart, erstellen soll). |
AW: Form1 und Form2, vermutlich Initialisierungsfehler
vielen dank...immer diese dummen Fehler :(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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 by Thomas Breitkreuz