AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler im Programm?

Ein Thema von Flofu · begonnen am 26. Aug 2004 · letzter Beitrag vom 27. Aug 2004
Antwort Antwort
Flofu

Registriert seit: 26. Aug 2004
Ort: Singhofen
9 Beiträge
 
Delphi 5 Standard
 
#1

Fehler im Programm?

  Alt 26. Aug 2004, 15:46
Hallo

Ich habe ein kleines Problem in meinem Programm.
Das Programm ist im Anhang. Wer kann mir da weiterhelfen? Es geht im grunde um die Übergabe bzw. den Zugriff auf Variabeln, Panel oder Edit Inhalten von einer Unit auf die andere. Das Programm ist nur zum Üben gedacht, und hat keinen tieferen Sinn.
Kann sich jemand das Programm mal anschauen und mir sagen woran es liegt?
Der Fehler liegt wohl in der Unit11 in der Zeile erg := Form2.PZahl[4].Caption! Aber warum?

Vielen Dank schon mal.

Mit freundlichen Grüßen

Flofu
Angehängte Dateien
Dateityp: zip prog1.zip (175,9 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Bowler
Bowler

Registriert seit: 8. Sep 2003
Ort: Bochum
148 Beiträge
 
Delphi XE7 Enterprise
 
#2

Re: Fehler im Programm?

  Alt 26. Aug 2004, 16:02
Ist die Indizierung bei Arrays nicht 0-based? Müsste es denmach nicht

erg := Form2.PZahl[3].Caption; Heissen? Ich habe bisher nur kurz in Deinen Code geschaut, aber gesehen, dass Du das Array mit [1..4] anlegst...damit hast Du 4 Elemente im Array....wenn Du dann darauf zugreifst, dann fängt das ganze bei null an, also so:

Delphi-Quellcode:
erg := Form2.PZahl[0].Caption;
erg := Form2.PZahl[1].Caption;
erg := Form2.PZahl[2].Caption;
erg := Form2.PZahl[3].Caption;
Ich weiss nun nicht, ob das zur Lösung beträgt, ist aber meines Erachtens erstmal ein Fehler.

Gruß
Christian
Christian Rüsken
  Mit Zitat antworten Zitat
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#3

Re: Fehler im Programm?

  Alt 26. Aug 2004, 16:08
Hi,

dein problem liegt dort (Hauptprogramm)
Delphi-Quellcode:
procedure TForm1.neuesFormular1Click(Sender: TObject);
var BnForm : TForm2;
begin
  BnForm := TForm2.Create(Self);
  BnForm.Show;
end;
du erzeugst eine Instanz von TForm2 und zwar in der Variable BnForm.
Dein Aufruf in Menu11 lautet aber wie folgt.
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var erg : string;
begin
 erg := Form2.PZahl[4].Caption;
Hier willst du auf den Inhalt der Variable Form2 zugreifen.
Da die Instanz aber nicht erzeugt wurde, kracht es.
Also, in Hauptprogramm lieber
Delphi-Quellcode:
procedure TForm1.neuesFormular1Click(Sender: TObject);
begin
  if not assigned(Form2) then // <- damit überprüfst du, ob die instanz bereits erzeugt wurde.
    Form2 := TForm2.Create(Self); // wenn nicht, erzeugst du hier eine
  Form2.Show;
end;
Edit:
Zitat von Bowler:
Ist die Indizierung bei Arrays nicht 0-based? Müsste es denmach nicht ..
Nein in diesem Fall nicht. Flofu hat das Array als ab 1 beginnend deklariert.
Gruß
ken
  Mit Zitat antworten Zitat
Flofu

Registriert seit: 26. Aug 2004
Ort: Singhofen
9 Beiträge
 
Delphi 5 Standard
 
#4

Re: Fehler im Programm?

  Alt 27. Aug 2004, 06:24
Zitat von Bowler:
Ist die Indizierung bei Arrays nicht 0-based? Müsste es denmach nicht

erg := Form2.PZahl[3].Caption; Heissen? Ich habe bisher nur kurz in Deinen Code geschaut, aber gesehen, dass Du das Array mit [1..4] anlegst...damit hast Du 4 Elemente im Array....wenn Du dann darauf zugreifst, dann fängt das ganze bei null an, also so:

Delphi-Quellcode:
erg := Form2.PZahl[0].Caption;
erg := Form2.PZahl[1].Caption;
erg := Form2.PZahl[2].Caption;
erg := Form2.PZahl[3].Caption;
Ich weiss nun nicht, ob das zur Lösung beträgt, ist aber meines Erachtens erstmal ein Fehler.

Gruß
Christian
Hi, ja das stimmt schon, aber PZahl greift nicht auf das array zu sondern auf den Zähler i, der in einer for-Schleife von eins bis 4 gezählt wird. Es ist natürlich aber die Frage wie die Panel nun nach dem erstellen nummeriert sind, da sie ja nur dynamisch bei Laufzeit erstellt werden? Aber danke schon mal. Leider hat die Änderung nichts bewirkt.
  Mit Zitat antworten Zitat
Flofu

Registriert seit: 26. Aug 2004
Ort: Singhofen
9 Beiträge
 
Delphi 5 Standard
 
#5

Re: Fehler im Programm?

  Alt 27. Aug 2004, 06:40
Zitat von CenBells:
Hi,

dein problem liegt dort (Hauptprogramm)
Delphi-Quellcode:
procedure TForm1.neuesFormular1Click(Sender: TObject);
var BnForm : TForm2;
begin
  BnForm := TForm2.Create(Self);
  BnForm.Show;
end;
du erzeugst eine Instanz von TForm2 und zwar in der Variable BnForm.
Dein Aufruf in Menu11 lautet aber wie folgt.
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var erg : string;
begin
 erg := Form2.PZahl[4].Caption;
Hier willst du auf den Inhalt der Variable Form2 zugreifen.
Da die Instanz aber nicht erzeugt wurde, kracht es.
Also, in Hauptprogramm lieber
Delphi-Quellcode:
procedure TForm1.neuesFormular1Click(Sender: TObject);
begin
  if not assigned(Form2) then // <- damit überprüfst du, ob die instanz bereits erzeugt wurde.
    Form2 := TForm2.Create(Self); // wenn nicht, erzeugst du hier eine
  Form2.Show;
end;
Edit:
Zitat von Bowler:
Ist die Indizierung bei Arrays nicht 0-based? Müsste es denmach nicht ..
Nein in diesem Fall nicht. Flofu hat das Array als ab 1 beginnend deklariert.
Gruß
ken
Hallo, danke erst mal, nach der Umstellung hat es funktioniert. Es lag wohl daran, das ich die Form als BnForm aufgerufen habe, und auf Form2 zugreifen wollte. Aber es hat weder geklappt mit einer Umstellung von BnForm auf Form2 noch im Aufruf als erg := BnForm.PZahl[4].Caption. Es verstehe nicht, wieso diese Instanz noch nicht erzeug sein konnte, da ich den Dialog der darauf zugreift (Unit11) ja erst öffnen kann wenn ich Form2 auf dem Schirm habe. Was mich dann wieder zu meiner Frage bringt, wie ich auf beliebige Variabeln, nicht unbedingt nur Inhalte von Panels o.ä. von einer in die nächste Unit zugreifen kann. Naja erst mal danke.

Mit freundlichen Grüßen Flo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz