Entwickler-Ecke
Sonstiges (Delphi) - Variable übergeben !
Jagg - Mi 19.11.03 12:12
Titel: Variable übergeben !
Hallo Leute !
Ich habe ein Programm von dem ich ein anderes Prgramm starte !
Beim Verlassen des 1.Programmes soll er sich eine Variable merken und diese in dem 2.Programm übergeben !
Wie mache ich das ???
Jagg !
Jagg - Mi 19.11.03 13:47
wenn ich jetzt vom 1 programm den parameter z.b Wert auslese,wie lese ich den Wert dann wieder in das 2 programm ein ???
matze - Mi 19.11.03 15:15
starte das 2. proggi einfach mit parameter !!!
den kannst du per paramstr (1) abragen.
und den paramter hängst du einfach beim starten des 2. proggis an !
Jagg - Mi 26.11.03 14:39
ich versteh dsa nicht
hier ist mal ein code aus dem 1.prog
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| if Key = '3' then begin Form33.lb_lieferung.caption := 'Überlieferung'; LieferText := Ueberlieferung; LieferDatei := UBNLIEF; Form33.Show; end; if Key = '4' then begin Form33.lb_lieferung.caption := 'Unterlieferung'; LieferText := Unterlieferung; LieferDatei := UNLIEF; Form33.Show; end; |
jetzt aus dem 2.prog
Quelltext
1: 2: 3: 4:
| LieferText := Paramstr(1); LieferTextE := LieferText; LieferDatei := Paramstr(1); LieferDateiE := LieferDatei; |
Jetzt sollte in den Variablen stehen was für eine LieferDatei oder LieferText ist !
abet bei dem 2 prog zeigt er nichts an warum ????
PS : Das ist alles stringvariablen !
[/delphi]
Mossi - Mi 26.11.03 14:47
Den ersten Parameter liest du mit
ParamStr[1] aus und den zweiten dann mit
ParamStr[2]
Das ist schonmal das erste.
Was mir persönlich aber auch noch auffällt: handelt es sich bei dir wirklich um zwei Programme oder nu um zwei Fenster in einem Programm?
Für ein echtes zweites Programm benötigst du einen Call wie ShellExecute (siehe oben)
Für die zweite Möglichkeit musst du lediglich die Variablen in der Form besetzen.
Quelltext
1: 2: 3:
| form2.LieferText := Unterlieferung; form2.LieferDatei := UNLIEF; form2.Show() |
Der Teil ist natürlich dann in der ersten Form (aufrufende) zu schreiben
Jagg - Mi 26.11.03 15:04
es sind 2 fenster
ich versuch es mal
Jagg - Mi 26.11.03 15:09
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| if Key = '3' then begin Form33.lb_lieferung.caption := 'Überlieferung'; Form33.LieferText := Ueberlieferung; Form33.LieferDatei := UBNLIEF; Form33.Show; end; if Key = '4' then begin Form33.lb_lieferung.caption := 'Unterlieferung'; Form33.LieferText := Unterlieferung; Form33.LieferDatei := UNLIEF; Form33.Show; end; |
ist das so richtig ?
Jagg - Mi 26.11.03 15:14
ich glaube ich versteh noch nicht die ganze logik !
Wie sage ich im 1 Fenster das "diese"(z.b. Wert) variable später übergeben wird in ein anderes fenster ????
wie ich das im 2 fenster aufrufe weis ich ja
mit Paramstr(1)
!
Mossi - Mi 26.11.03 15:34
du musst natürlich jede Variable einzeln an das zweite Fenster übergeben. Das heißt, du musst diese einem Object oder einer Variable in Form2 zuweisen.
ParamStr benötigst du innerhalb eines Programms eigentlich gar nicht, da hier nur Aufrufparameter stehen, die du beim Programmstart übergibst.
Jagg - Mi 26.11.03 15:44
also nochmal :
Das steht im 1 Form :
Quelltext
1: 2: 3: 4: 5: 6: 7:
| if Key = '3' then begin Form33.lb_lieferung.caption := 'Überlieferung'; LieferText := 'Ueberlieferung'; LieferDatei := 'UBNLIEF'; Form33.Show; end; |
und das steht im 2 Form beim Activate :
Quelltext
1: 2: 3: 4:
| LieferText := Paramstr(1); LieferTextE := LieferText; LieferDatei := Paramstr(2); LieferDateiE := LieferDatei; |
....jetzt frage ich mich,was ist der 1 Parameter den ich übergebe,wie wird erkenne ich ihn ???
Ist das so richtig,was anderes geht bei mir nicht,was mache ich falsch,ich glaube ich bin zu blöd zum Programmieren,vllt sollte ich meinen beruf an den nagel hängen !
Mossi - Mi 26.11.03 16:05
Wie gesagt: Innerhalb eines Programms nützt dir ParamStr gar nichts.
Ich hab hier mal einen kleinen Programmcode, der dir vielleicht weiterhelfen wird. Kann aber sein, dass ein paar kleine Schreibfehler drin sind.
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: 35: 36: 37: 38: 39:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); var var1: String; var2: String; Form2: TForm2; begin var1 := 'Das ist Variable 1' var2 := 'Das ist Variable 2' Form2 := TForm2.Create; Form2.Var1InForm2 := var1; Form2.Var2InForm2 := var2; Form2.Show; end;
end. |
und hier die zweite Form
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:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type TForm2 = class(TForm) private public Var1InForm2, Var2InForm2: String; end;
var Form2: TForm2;
implementation
{$R *.DFM}
end. |
Es werden die zwei Variablen in Form2 belegt, bevor die Form angezeigt wird.
Anonymous - Mi 26.11.03 16:08
Der Code da oben wird aber so ganz bestimmt nicht funzen. Wenn du auf das 2. Formular zugreifst, solltest du zumindest so lange warten, bis es erstellt ist (Und das ist es in der Regel nicht wenn gerade Form1 erstellt wird)
Mossi - Mi 26.11.03 16:14
das ist möglich. Hab jetzt auf die Schnelle nur schnell was kopiert. Ausprobieren kann ich es im moment selbst nicht, da ich gerade kein Delphi zur Verfügung hab.
Jedoch sollte die Logik klar sein, hoffe ich.
Jagg - Mi 26.11.03 16:20
yo das stimmt das klappt nicht bei mir
Jagg - Mi 26.11.03 16:21
hmmm..woran könnte es liegen
Mossi - Mi 26.11.03 16:23
siehe diesen Eintrag:
obbschtkuche hat folgendes geschrieben: |
Der Code da oben wird aber so ganz bestimmt nicht funzen. Wenn du auf das 2. Formular zugreifst, solltest du zumindest so lange warten, bis es erstellt ist (Und das ist es in der Regel nicht wenn gerade Form1 erstellt wird) |
Jagg - Mi 26.11.03 16:34
ich habe das jetzt mit dem form.create in form.create gemacht !
richtig ???
Mossi - Mi 26.11.03 16:40
nein. Erzeug dir auf Form1 einen Button und in das OnClick-Ereignis des Buttons schreibst du dann den Code, den ich in meinem Beispiel in FormCreate geschrieben habe.
Den gesamte FormCreate-Prozedur löschst du dann raus. Dann sollte es eigentlich funktionieren
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!