Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Array an Formular übergeben
Einsamer Schütze - So 05.11.06 23:06
Titel: Array an Formular übergeben
Hallo Entwickler,
ich hätte da gern mal folgendes Problem:
Habe eine Anzahl von Integers, die ich in ein dynamisches Array speichere. Dann geht es aus dem Formular weiter in das nächste Formular, wo ich das Array für eine Berechnung benötige.
Frage: am liebsten würde ich das über eine neue Eigenschaft des aufgerufenen Formulars machen, weiß aber nicht, wie ich meine Werte dort in das Array reinbekomme - wie geht das?
Danke im Voraus
ES
oldmax - Mo 06.11.06 10:34
Hi
Es sind zwar schon oft die Fragen beantwortet worden, wie bekomme ich die Daten aus einem anderen Formular.Trotzdem, noch einmal eine Erklärung.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| Type MyForm1 = Class(TForm) Private ..... Public MyVariable : irgendwas... .... .... end;
Var MyForm1 : TForm; MyVariable : irgendwas... ..... |
gut, nun wird in einem weiteren Formular er Wert gebraucht. Ich weise einmal Test in der FormCreate Procedure den Wert aus MyVariable aus Form1 zu.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| Procedure TMyForm2.Create( sender : TObject); var test : irgendwas Begin Test:=MyForm1.MyVariable; ..... end; |
Kommentar:
Hier wird der Compiler anfragen, ob er MyForm1 referenzieren soll. Das beantwortest du mit ja und die Unit, in welcher MyForm1 deklariert ist, wird in die Uses-Liste im Implementierungsteil eingebunden.
Gruß oldmax
Einsamer Schütze - Mo 06.11.06 16:01
Hallo und danke erst einmal. Dass ich eine Variable deklarieren kann ist mir bewusst, ich habe mir die diesbezüglichen Postings auch durchgelesen, um auf die verhaltene Kritik zu antworten.
Mein Problem scheint im Datentyp Array zu bestehen, jedenfalls kommt es mir so vor. Ich habe folgendes versucht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| type TForm1 = class(TForm)
private public A: array of Integer; end;
var Form1: TForm1;
procedure TForm1.Button1Click(Sender: TObject);
var i : integer; begin SetLength(A, 10);
for i := 0 to 9 do A[i] := 100 * i;
Form2.show; end;
SOWEIT FORMULAR 1
DANN procedure TForm2.FormCreate(Sender: TObject); var myarray : array of integer; begin
setlength (myarray,length(Form1.A)); myarray := Form1.A; |
UND BEI der letzten Zeile kracht's - ich bekomme meine Werte nicht in das Array
Compilermeldung "INKOMPATIBLE TYPEN".
Vielleicht stehe ich ja auch irgendwie nur trivial auf'm Schlauch....
Danke für Eure Hilfe.
Moderiert von
raziel: Delphi-Tags hinzugefügt
Einsamer Schütze - Mo 06.11.06 16:09
Hallo,
habe gerade noch mal das Kopieren der Arraystellen über eine Schleife eingebaut, dann geht's - aber kann man nicht auch zuweisen oder übergeben?
ES
oldmax - Mo 06.11.06 18:45
Hi
Nix Kritik, nur Hinweis, falls meine Erklärung nicht ausreicht.
Ok, den Weg hast du ja selbst gefunden und geanauso hätte ich es auch gemacht. Ein komplettes Array wirst du nicht zuweisen können, es sei denn, du machst ein Objekt daraus. Du kannst aber auch, um die Datenquelle nicht tausendmal zu kopieren die Arrayzellen wie folgt ansprechen
xyz:=Form1.A[i];
Das hat den Vorteil, dass deine Daten nur an einer Stelle gehalten werden und du dich nicht irgendwann einmal fragst, welche nun die aktuelleren sind...
Form1.A[i]:=xyz;
Aber vielleicht hast du ja auch gute Gründe für die Kopie und willst die Ursprungsdaten nicht verändern oder was auch immer.
Ok, nun zum Schluß, ich wollte nicht kritisieren und sollte meine Antwort den Anschein erweckt haben, sorry, war hier und auch anderswo nicht meine Absicht.
Gruß oldmax
Einsamer Schütze - Di 07.11.06 20:44
Danke oldmax, ich bin nicht so empfindlich, aber endlos die gleichen Fragen nervt mich selbst auch, alles easy, Danke.
ES
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!