[ gelöst] Unterprogramm aufrufen
-
- Beiträge: 14
- Registriert: Do 22. Mai 2014, 13:03
[ gelöst] Unterprogramm aufrufen
Hallo,
(Lazarusversion 1.2.4, Windows7 64bit)
ich habe eine Problem beim Aufruf von Unterprogrammen:
Zum Testen habe ich zwei Miniprogramme erzeugt. Programm1 enthält in der Uses-Klausel Programm2, Programm2 unter implemantatation eine usesklausel zu Programm1.
Programm1 hat einen Button, der per "form2.show" die Maske des zweiten Programms aufrufen soll. Die aufzurufende Maske ist ansonsten vollkommen leer.
Dabei lauf ich reproduzierbar immer auf den selben Fehler:
SIGSEV in der Datei /include/customform/inc in Zeile 2138.
und dort steht
procedure TCustomForm.Show;
begin
Visible := True;
BringToFront;
end;
Hat jemand eine Idee, was ich hier falsch mache? Ich stehe hier echt auf dem Schlauch, es sollte doch eigentlich ganz einfach sein.
LG
Michael
(Lazarusversion 1.2.4, Windows7 64bit)
ich habe eine Problem beim Aufruf von Unterprogrammen:
Zum Testen habe ich zwei Miniprogramme erzeugt. Programm1 enthält in der Uses-Klausel Programm2, Programm2 unter implemantatation eine usesklausel zu Programm1.
Programm1 hat einen Button, der per "form2.show" die Maske des zweiten Programms aufrufen soll. Die aufzurufende Maske ist ansonsten vollkommen leer.
Dabei lauf ich reproduzierbar immer auf den selben Fehler:
SIGSEV in der Datei /include/customform/inc in Zeile 2138.
und dort steht
procedure TCustomForm.Show;
begin
Visible := True;
BringToFront;
end;
Hat jemand eine Idee, was ich hier falsch mache? Ich stehe hier echt auf dem Schlauch, es sollte doch eigentlich ganz einfach sein.
LG
Michael
Zuletzt geändert von michaschwartz am Mi 8. Okt 2014, 13:35, insgesamt 1-mal geändert.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Unterprogramm aufrufen
Zuerst mal verwendest du anscheinend Begriffe falsch. Ich vermute, es handelt sich nicht um Unterprogramme, sondern um Forms.
?
Gibt es dafür eigentlich einen Grund?michaschwartz hat geschrieben:[...] Programm2 unter implemantatation eine usesklausel zu Programm1[...]
Da tippe ich doch mal darauf, dass dein zweites Form nirgendwo erzeugt wurde. Findest du in deiner .lpr-Datei irgendwo die Zeilemichaschwartz hat geschrieben:SIGSEV in der Datei /include/customform/inc in Zeile 2138.
Code: Alles auswählen
Application.CreateForm(TForm2, Form2);
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 14
- Registriert: Do 22. Mai 2014, 13:03
Re: Unterprogramm aufrufen
1) Für die uses-Klausel im Programm2 gibt es in der Tat keinen Grund, die kann ich auch weglassen.
2) Ich bin in den Begrifflichkeiten tatsächlich nicht sicher, ich habe beide Programme per Projekt/Neues Projekt erzeugt und wollte nun, das das erst erste Programm das zweite aufruft. Ich habe das zum Testen soweit wie möglich vereinfacht.
3) die .lpr vom zweiten Programm sieht wie folgt aus:
LG.
Michael
2) Ich bin in den Begrifflichkeiten tatsächlich nicht sicher, ich habe beide Programme per Projekt/Neues Projekt erzeugt und wollte nun, das das erst erste Programm das zweite aufruft. Ich habe das zum Testen soweit wie möglich vereinfacht.
3) die .lpr vom zweiten Programm sieht wie folgt aus:
Code: Alles auswählen
program test2;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, test2_l
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
Michael
Zuletzt geändert von Lori am Mi 1. Okt 2014, 17:39, insgesamt 2-mal geändert.
Grund: Highlighter
Grund: Highlighter
Re: Unterprogramm aufrufen
Was willst du erreichen?
Zwischen zwei Anwendungen muss man anders kommunizieren, aber ich glaube, das willst du gar nicht eigentlich, oder?
Zwischen zwei Anwendungen muss man anders kommunizieren, aber ich glaube, das willst du gar nicht eigentlich, oder?
-
- Beiträge: 14
- Registriert: Do 22. Mai 2014, 13:03
Re: Unterprogramm aufrufen
Eigentlich will ich aus einer Anwendung, die Datenbanksätze verwaltet, auf eine weitere Anwendung zugreifen, die Reports erstellt. Nach dem Erstellen der Reports möchte ich wieder auf die aufrufenden Anwendung zurück verzweigen.
Re: Unterprogramm aufrufen
und warum um alles in der Welt müssen das 2 Programme sein?
-
- Beiträge: 14
- Registriert: Do 22. Mai 2014, 13:03
Re: Unterprogramm aufrufen
Ich hielt mehrere Programme bisher für übersichtlicher, solange diese sich leicht miteinander verbinden lassen. Bin ich hier gänzlich auf dem Holzweg?
Re: Unterprogramm aufrufen
Du kannst schon zwei Anwendungen machen, nur funktionieren die dann autonom.michaschwartz hat geschrieben:Ich hielt mehrere Programme bisher für übersichtlicher, solange diese sich leicht miteinander verbinden lassen. Bin ich hier gänzlich auf dem Holzweg?
D.h. eine Kommunikation zwischen beiden funktioniert nicht so, wie du dir das vorstellst, über "uses...", sondern wesentlich komplizierter.
Wenn die Programme nicht eigenständig sein sollen, dann erstelle einfach mehrere Formulare für die versch. Programmteile.
Re: Unterprogramm aufrufen
Sry, aber ich denke schon.michaschwartz hat geschrieben:Bin ich hier gänzlich auf dem Holzweg?
Wenn ich dich richtig verstanden habe, soll das eine Programm Daten lesen und das andere davon abhängig Reports erstellen?
Dann gehört das in 1 Programm auf evtl 2 Formulare.
-
- Beiträge: 200
- Registriert: So 11. Jul 2010, 18:39
- OS, Lazarus, FPC: Linux
- CPU-Target: 64 Bit
- Wohnort: Wien
- Kontaktdaten:
Re: Unterprogramm aufrufen
Ich fürchte, da herrscht Begriffsverwirrung.
Lincoln-Six-Echo (darf ich LSE sagen?), ein Programm ist im Sinne von Free Pascal aus eienm Hauptmodeul (Schlüsselwort "program") und mehreren statischen Bibliotheken (Schlüsselwort "unit") zusammen gesetzt.
Ein Programm kan durchaus mehrere Formulare (englisch "Forms") enthalten, aber eine Unit nur maximal ein Formular. Eines dieser Formulare (nämlich das erste, das in der .lpr-Datei erzeugt wird) ist das Hauptformular, das vor allem das Programm beendet, wenn es geschlossen wird. Die anderen sind an sich unabhängig, aber sie können miteinander kommunizieren. In einem Formular kannst Du also Dein eines Ding drehen und in einer anderen Deinen Report aufbauen. Die beiden gehörten dann aber zum selben Programm. War es das, was du gemeint hast?
Lincoln-Six-Echo (darf ich LSE sagen?), ein Programm ist im Sinne von Free Pascal aus eienm Hauptmodeul (Schlüsselwort "program") und mehreren statischen Bibliotheken (Schlüsselwort "unit") zusammen gesetzt.
Ein Programm kan durchaus mehrere Formulare (englisch "Forms") enthalten, aber eine Unit nur maximal ein Formular. Eines dieser Formulare (nämlich das erste, das in der .lpr-Datei erzeugt wird) ist das Hauptformular, das vor allem das Programm beendet, wenn es geschlossen wird. Die anderen sind an sich unabhängig, aber sie können miteinander kommunizieren. In einem Formular kannst Du also Dein eines Ding drehen und in einer anderen Deinen Report aufbauen. Die beiden gehörten dann aber zum selben Programm. War es das, was du gemeint hast?
Ceterum censeo computatores per Pascal docendos esse.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Unterprogramm aufrufen
Als notorischer Klugsch***er muss ich an dieser STelle widersprechen. Mehr als ein Formular pro Unit ist durchaus möglich, wenn auch sehr unüblich (aus guten Gründen).diogenes hat geschrieben:[...] aber eine Unit nur maximal ein Formular[...]
Aber tatsächlich bleibt immer noch die Frage an den OP offen: was ist eigentlich gemeint?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Unterprogramm aufrufen
da hast du Recht. In einer speziellen Anwendung erzeugen wir in einer unit aufgrund von Vorgängen auf einem Formulare dynamisch weitere unterschiedliche Formulare. das hat da seinen guten Grund.m.fuchs hat geschrieben:Mehr als ein Formular pro Unit ist durchaus möglich
Aber das hat nichts mit der Anfrage hier zu tun. Der OP müsste sich mal äußern was er eigentlich erreichen will und warum er dazu zwei autonome Programme erzeugt. Jedenfalls kann er zwei solcher Programme nicht per uses-Klausel verbinden und ansprechen. Aber das war doch die Ausgangsfrage?
-
- Beiträge: 14
- Registriert: Do 22. Mai 2014, 13:03
Re: Unterprogramm aufrufen
Sorry, ich hatte keinen speziellen Grund, mit zwei autonomen Programmen zu arbeiten. Ich hielt es für einfach und normal und habe nun gelernt, daß dem nicht so ist. Danke für eure Hilfe. LG Michael