Autor Beitrag
Jagg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 19.11.03 12:12 
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 !
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 19.11.03 13:39 
Hallo,

suche nach folgendem:

Programm Starten: Suche in: Delphi-Forum, Delphi-Library SHELLEXECUTE.
Parameter des eigenen Programms auslesen: Suche in: Delphi-Forum, Delphi-Library PARAMSTRING

Bessere Ergebnisse findest du sicher wenn du in den FAQs und Tututials mal nach diesen und ähnlichen Themen suchchst.

Gruß
Klabautermann
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 !

_________________
In the beginning was the word.
And the word was content-type: text/plain.
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 26.11.03 14:39 
ich versteh dsa nicht
hier ist mal ein code aus dem 1.prog
ausblenden 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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99
Erhaltene Danke: 2

Win XP, Linux
D7 Enterprise, K3 Prof
BeitragVerfasst: 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.
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 26.11.03 15:04 
es sind 2 fenster
ich versuch es mal
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 26.11.03 15:09 
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99
Erhaltene Danke: 2

Win XP, Linux
D7 Enterprise, K3 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 26.11.03 15:44 
also nochmal :
Das steht im 1 Form :
ausblenden 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 :
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99
Erhaltene Danke: 2

Win XP, Linux
D7 Enterprise, K3 Prof
BeitragVerfasst: 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.

ausblenden volle Höhe 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
    { Private declarations }
  public
    { Public declarations }
  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
ausblenden 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
    { Private declarations }
  public
    { Public declarations }
    Var1InForm2, Var2InForm2: String;
  end;

var
  Form2: TForm2;

implementation

{$R *.DFM}

end.


Es werden die zwei Variablen in Form2 belegt, bevor die Form angezeigt wird.
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99
Erhaltene Danke: 2

Win XP, Linux
D7 Enterprise, K3 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 26.11.03 16:20 
yo das stimmt das klappt nicht bei mir
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 26.11.03 16:21 
hmmm..woran könnte es liegen
Mossi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99
Erhaltene Danke: 2

Win XP, Linux
D7 Enterprise, K3 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 26.11.03 16:34 
ich habe das jetzt mit dem form.create in form.create gemacht !
richtig ???
Mossi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99
Erhaltene Danke: 2

Win XP, Linux
D7 Enterprise, K3 Prof
BeitragVerfasst: 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