Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Variable (bzw Array) von Unit1 an Unit2 übergeben. Wie? (https://www.delphipraxis.net/115265-variable-bzw-array-von-unit1-unit2-uebergeben-wie.html)

knocko 9. Jun 2008 14:34


Variable (bzw Array) von Unit1 an Unit2 übergeben. Wie?
 
EDIT

glaub hab den Fehler!!! Braucht also den Text nicht lesen

Update kommt demnächst


EDIT

Mein Fehler war, dass ich ausversehen die Werte eintragen lassen hab, während das Formular 2 erstellt wurde.. Da war natürlich noch nix in den Arrays drin. *doing* Sorry für diesen Nerd Post :)
Vllt hilft es ja doch jemanden, in der Fehleranalyse *g*
__________________________________________________ __________________________________________________ ________________


Hi Community...

Ich bastel gerade ein kleines Programm für die Schule.
Und zwar sollen wir in dem Programm angeben können, wieviel Schüler welche Note bekommen.

Z.B. haben wir insg. 1500 Schüler auf der Schule
Davon haben z.b.
- 1000 Schüler Note 1
- 200 Schüler Note 2
- 100 Schüler Note 3
... usw bis die 1500 verteilt sind...

Jetzt hab ich mir gedacht, dass ich mir mehrere EditBoxen erstelle und alles in ein Array speichere.
Dieses Array soll dann in eine andre Unit (Unit2) übergeben werden, in der es dann zu einer Auswertung des ganzen kommt, wie z.B. Gesamtdurchschnitt oder prozentuale Angaben von den Schülern mit ihren Noten (also wieviel Prozent haben Note 1 geschafft usw)

Irgendwie funktioniert das aber nicht.

Ich hab in Unit2 unter "uses" noch Unit1 eingebunden.
Anschließend hab ich in Unit1 die Variable "schueler" global gesetzt.

Unit1 (die Unit in der die Daten eingegeben werden)

Delphi-Quellcode:
var
  schueler: array of [0..16] of integer;
...

Unit1 Quelltext
Delphi-Quellcode:
schueler[0] := StrToInt(Edit6.Text);
  schueler[1] := StrToInt(Edit7.Text);
  schueler[2] := StrToInt(Edit8.Text);
  //...usw
  Form2.Show();
Ich hab auch getestet, ob die Arrays gefüllt werden, indem ich mit Hilfe von der Taste F7 die Anweisungen einzeln durchgegangen bin. JA die Werte wurden in das Array eingetragen.

Nun wollt ich das Array an Unit2 übergeben und dort in einer Gesamtübersicht anzeigen lassen.

Unit2
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, Series, StdCtrls, Grids, Unit1;
...

Unit2 Quelltext (an dieser Stelle sollen die Werte erst einmal in eine Tabelle eingetragen werden)
Delphi-Quellcode:
StringGrid1.Cells[1,1] := IntToStr(schueler[0]);
  StringGrid1.Cells[2,1] := IntToStr(schueler[1]);
  StringGrid1.Cells[3,1] := IntToStr(schueler[2]);
  //... usw

Allerdings ist bei jeder Variable der Wert "0".
Ich hab es auch mit Alternativen getestet, wie z.b. eine "normale" Variable, anstatt eines Arrays.

Im Internet wurde gesagt es geht so:
Delphi-Quellcode:
StringGrid1.Cells[1,1] := IntToStr(Unit1.Form1.schueler);
bzw.

Delphi-Quellcode:
StringGrid1.Cells[1,1] := IntToStr(Unit1.schueler);

Beide Varianten funktionieren nicht.
Wobei ich bei der zweiten Variante sagen muss, dass mir das Delphiprogramm in dieser "Programmhilfe" schon die Variable "schueler" aufgelistet hat. Nur der Wert ist auch hier "0" ...


Weiß jemand wieso er immer die Variable den Wert 0 besitzt?


PS: Ich denke mein Quelltext ist bei Weitem nicht der Schönst. Sicherlich wäre das durch eine Schleife wesentlich schöner. Aber meine Methode MÜSSTE auch gehen. Und wenn die Übergabe der Variable funktionieren sollte und ich im groben fertig bin, dann würd ich mich nochmal dran machen den Quelltext zu überarbeiten! :)
Bitte nicht runtermachen

mkinzler 9. Jun 2008 14:45

Re: Variable (bzw Array) von Unit1 an Unit2 übergeben. Wie?
 
Wo in Unit2 erfolgt diese Anzeige?
[Edit:Wo bleibt der rote Kasten?]

tomsel 9. Jun 2008 14:48

Re: Variable (bzw Array) von Unit1 an Unit2 übergeben. Wie?
 
Also mir fällt zunächst mal folgendes auf:

Zitat:

Unit1 Quelltext
Delphi-Quellcode: markieren
schueler[0] := StrToInt(Edit6.Text);
schueler[1] := StrToInt(Edit7.Text);
schueler[2] := StrToInt(Edit8.Text);
//...usw
Form2.Show();


Ich hab auch getestet, ob die Arrays gefüllt werden, indem ich mit Hilfe von der Taste F7 die Anweisungen einzeln durchgegangen bin. JA die Werte wurden in das Array eingetragen.
Du trägst die Werte aus den Editfeldern in das Array ein - ok. Aber erst DANACH zeigst du das Form an. So kann das nicht funktionieren.

knocko 9. Jun 2008 14:52

Re: Variable (bzw Array) von Unit1 an Unit2 übergeben. Wie?
 
Wieso geht doch?

Ob ich erst Form anzeigen lasse oder nicht ist doch egal.
Zumindest geht es mit beiden Varianten.


PS: Was für einen roten Kasten meint ihr ? :)

mkinzler -> Die Anzeige erfolgt in der StringGrid.
Allerdings hab ich die Arrays eintragen lassen, wo Form2.Create ausgeführt wird. Sorry wirklich dummer Fehler der mir erst jetzt (nach 1h ^^) aufgefallen ist

tomsel 9. Jun 2008 14:58

Re: Variable (bzw Array) von Unit1 an Unit2 übergeben. Wie?
 
Zitat:

Zitat von knocko
Wieso geht doch?

Ob ich erst Form anzeigen lasse oder nicht ist doch egal.
Zumindest geht es mit beiden Varianten.

Ja, hab nicht richtig hingeschaut :stupid:
Da bist du in Form1 und willst Form2 anzeigen, ist ok.

mkinzler 9. Jun 2008 15:05

Re: Variable (bzw Array) von Unit1 an Unit2 übergeben. Wie?
 
Das habe ich gesehen, ab nicht zu welchem Zeitounkt du den array füllst. ich vermute erst nachdem du dessen Inhalt ins Grid kopierst

knocko 9. Jun 2008 15:06

Re: Variable (bzw Array) von Unit1 an Unit2 übergeben. Wie?
 
Richtig!

Das ist das was ich auch schon herausbekommen habe hehe.

Aber danke für deine / eure Hilfsbereitschaft! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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