Showmodal

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Showmodal

Beitrag von Michl »

Habe hier

Code: Alles auswählen

begin
  Application.Initialize;
  Application.CreateForm(TFHaupt, FHaupt);
//  Application.CreateForm (TFKorrigieren , FKorrigieren );
  Application.Run;
end.   
das Application.CreateForm ausgeklammert, da Du ja bei

Code: Alles auswählen

procedure TFHaupt.buKorrigierenClick(Sender: TObject);
begin
     FKorrigieren := TFKorrigieren.Create(self); 
diese erstellst.

Aber egal, ob mit oder ohne dem, bei mir wird (nachdem ich alles was der Compiler angemeckert hat rauskommentiert habe) die Form ordentlich geöffnet und geschlossen und beim nächsten Breakpoint gehalten. Allerdings habe ich unter Win7 getestet, ein Test unter dem gleichen BS kann evtl. jemand anders noch machen?! Könntest ja nochmal das Projekt so starten, wie es bei mir ohne Probleme lief - Dein Projekt als Zip anbei (ohne DB) - damit etwas kleiner :) .
Dateianhänge
Test Showmodal.zip
(176.51 KiB) 111-mal heruntergeladen

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Showmodal

Beitrag von hde »

HaseCaesar hat geschrieben:Programmiere seit fast 30 Jahren mit Delphi

Delphi 1 erschien am 14.02.1995 :wink:
davor haben wir mit Assembler oder C programmiert, und davor alles hex-codiert

Wenn FKorrigieren zweimal erzeugt wird ann's nicht funktionieren, das abgespeckte Prog von Michl läuft einwandfrei
hde

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
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: Showmodal

Beitrag von m.fuchs »

hde hat geschrieben:Delphi 1 erschien am 14.02.1995 :wink:
davor haben wir mit Assembler oder C programmiert [...]
Also ich hatte Turbo Pascal :D
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

m.fuchs hat geschrieben:
hde hat geschrieben:Delphi 1 erschien am 14.02.1995 :wink:
davor haben wir mit Assembler oder C programmiert [...]
Also ich hatte Turbo Pascal :D
ah ja. noch ein veteran (der sich bestimmt auch noch an die firma heimsoeth erinnert :lol: )

ich habe 1985 mit turbo pascal 1.0 begonnen und alle versionen danach gehabt. als dann pascal für windows mit dem blöden resource-kit rauskam habe ich von 1991 - 1995 eine pause eingelegt und mit visual basic gearbeitet. als dann endlich delphi 1995 auf dem markt erschient, bin ich sofort wieder umgestiegen, denn ich mag pascal wesentlich lieber als basic und C ist überhaupt nicht mein fall.

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

hde hat geschrieben:
HaseCaesar hat geschrieben:Programmiere seit fast 30 Jahren mit Delphi

Delphi 1 erschien am 14.02.1995 :wink:
davor haben wir mit Assembler oder C programmiert, und davor alles hex-codiert

Wenn FKorrigieren zweimal erzeugt wird ann's nicht funktionieren, das abgespeckte Prog von Michl läuft einwandfrei
hde
da muß ich dir widersprechen. 1985 gab es noch kein windows, sondern DOS und da war turbo pascal 1.0 verfügbar !
so fing bei mir alles an.

1995 habe ich ein proggi geschrieben (2 jahre entwicklungszeit), das sich auch 18.000 x verkaufen ließ
(HERMA LabelDesigner 2.0). ist bislang mein größtes proggi mit > 58.000 zeilen quellcode.

mein zweitgrößtes proggi war eine spezielle auftragsverwaltung für einen optiker hier in hamburg.
hat 39.000 zeilen mit jede menge dbase-dbs. projekt lief von 1996 - 2003.

also so ganz unbeleckt bin ich nicht in der programmierung.

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

Michl hat geschrieben:Habe hier

Code: Alles auswählen

begin
  Application.Initialize;
  Application.CreateForm(TFHaupt, FHaupt);
//  Application.CreateForm (TFKorrigieren , FKorrigieren );
  Application.Run;
end.   
das Application.CreateForm ausgeklammert, da Du ja bei

Code: Alles auswählen

procedure TFHaupt.buKorrigierenClick(Sender: TObject);
begin
     FKorrigieren := TFKorrigieren.Create(self); 
diese erstellst.

Aber egal, ob mit oder ohne dem, bei mir wird (nachdem ich alles was der Compiler angemeckert hat rauskommentiert habe) die Form ordentlich geöffnet und geschlossen und beim nächsten Breakpoint gehalten. Allerdings habe ich unter Win7 getestet, ein Test unter dem gleichen BS kann evtl. jemand anders noch machen?! Könntest ja nochmal das Projekt so starten, wie es bei mir ohne Probleme lief - Dein Projekt als Zip anbei (ohne DB) - damit etwas kleiner :) .
nun, wenn du alles rausgeworfen hast bis es compilierbar war ... ich kann mir nicht vorstellen, daß DA der fehler liegt.
ich gehe vielmehr davon aus, daß es deshalb klappt, weil du unter win7 getestet hast. DA läuft mein proggi ja auch (ist ja von
delphi unter win7 nach lazarus unter linux von mir per hand konvertiert worden). ich könnte ja weiter in einer virtuellen
win7-maschine programmieren, aber: win-proggis werden unter linux von wine emuliert, was zu erheblichen
geschwindigkeitseinbußen führt.

evtl. ist ja hier jemand, der wie ich mit ubuntu arbeitet. exakt arbeite ich mit (terminal uname-a:)

Linux gerd-desktop 3.8.0-32-generic #47-Ubuntu SMP Tue Oct 1 22:35:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

ich tippe ganz stark darauf, daß es an meinem betriebssystem liegt, denn ich sehe keinen fehler in meinem code.

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Showmodal

Beitrag von theo »

Aut OpenSuse geht's.

Käse ist natürlich

Code: Alles auswählen

     if   abgebrochen then
     begin
          FKorrigieren.free;
          exit;
     end;    
Und dann nochmal

Code: Alles auswählen

finally
     FKorrigieren.free;      
Mit exit kommst du aus dem finally nicht raus.

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Showmodal

Beitrag von hde »

theo hat geschrieben:Käse ist natürlich

Code: Alles auswählen

if abgebrochen then
begin
FKorrigieren.free;
exit;
end;
die Variable 'abgebrochen' ist ja auch völlig unnötig, if würde reichen

@HaseCaesar
wenn du unter ubuntu Windows fahren willst, dann nimm VirtualBox, darin laufen alle OS'se
HaseCaesar hat geschrieben:ich tippe ganz stark darauf, daß es an meinem betriebssystem liegt,
glaub ich nicht, bei mir läuft des Kurzbeispiel auch
HaseCaesar hat geschrieben:da muß ich dir widersprechen. 1985 gab es noch kein windows, sondern DOS und da war turbo pascal 1.0 verfügbar !
so fing bei mir alles an.

nicht nur DOS und Unix,
aber auch davor haben wir schon programmiert, ohne OS und/oder Compiler oder Assembler :wink:

wp_xyz
Beiträge: 5139
Registriert: Fr 8. Apr 2011, 09:01

Re: Showmodal

Beitrag von wp_xyz »

ich tippe ganz stark darauf, daß es an meinem betriebssystem liegt, denn ich sehe keinen fehler in meinem code.
Nach aller Erfahrung ist das nicht so. Und ich kann mir nicht vorstellen, dass so ein fundamentaler Fehler noch niemandem aufgefallen ist.

Die erste Frage wäre, ob das von Michl zusammengestrichene Programm unter Ubuntu auch den Fehler zeigt (ich selbst kann das erst zuhause testen). Wenn nein, wäre der Fehler in den auskommentierten Teilen...

So weit ich gesehen habe, gibt es alle Funktionen aus dem Programm, über die der Compiler meckert, auch als reguläre Lazarus/fpc-Routinen:
tsuppercase --> uppercase (aus sysutils)
verz_exist --> directoryexists (in unit FileUtils)
verz_mit_slash --> IncludeTrailingPathDelimiter (sysutils).
rot, schwarz --> Konstanten, die man problemlos in diesem Programm neu deklarieren kann.

Ersetze diese "unit Gerd"-Routinen durch die "offiziellen" Routinen. Erstens weiß man nie, was man sich mit unnötigem Code einschleppt. Und zweitens müssten wir hier deinen Code nicht so stark verändern, um ihn compilieren zu können.

Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Showmodal

Beitrag von Patito »

wp_xyz hat geschrieben:
ich tippe ganz stark darauf, daß es an meinem betriebssystem liegt, denn ich sehe keinen fehler in meinem code.
Nach aller Erfahrung ist das nicht so. Und ich kann mir nicht vorstellen, dass so ein fundamentaler Fehler noch niemandem aufgefallen ist.
Also unter Linux hatte ich auch erst mal seltsame Probleme. Da ich eigentlich fast nur für Windows
programmiere, habe ich da aber nicht weiter nachgeforscht.

Was mich auf den ersten Blick gestört hat:
- In Verbindung mit ShowModal() gab es reichlich anomales Verhalten
- TEvent hat nicht funktioniert

Ich denke ein großes Windows-Projekt einfach so zu portieren wird immer schwierig sein.
Man sollte lieber klein anfangen und nach und nach die Features, die man verwendet, austesten.

Desktop-Entwicklung für Linux ist kein Mainstream - wenn man etwas komplexes macht, bewegt man sich schnell auf Neuland.
Ausserdem besteht immer auch die Möglichkeit, dass das Problem einfach an der speziellen Installation vom Linux liegt...

Meine Erfahrung mit einem kleineren Projekt (36 Units) war folgende:
Portierung Delphi-> Lazarus unter Windows:
ein paar Stunden Arbeit - Anwendung läuft praktisch identisch

Portierung Lazarus Windows -> Lazarus Linux:
ein ganzer Tag Arbeit - einige ungelöste GUI-Anomalitäten

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

wp_xyz hat geschrieben:
ich tippe ganz stark darauf, daß es an meinem betriebssystem liegt, denn ich sehe keinen fehler in meinem code.
Nach aller Erfahrung ist das nicht so. Und ich kann mir nicht vorstellen, dass so ein fundamentaler Fehler noch niemandem aufgefallen ist.

Die erste Frage wäre, ob das von Michl zusammengestrichene Programm unter Ubuntu auch den Fehler zeigt (ich selbst kann das erst zuhause testen). Wenn nein, wäre der Fehler in den auskommentierten Teilen...

So weit ich gesehen habe, gibt es alle Funktionen aus dem Programm, über die der Compiler meckert, auch als reguläre Lazarus/fpc-Routinen:
tsuppercase --> uppercase (aus sysutils)
verz_exist --> directoryexists (in unit FileUtils)
verz_mit_slash --> IncludeTrailingPathDelimiter (sysutils).
rot, schwarz --> Konstanten, die man problemlos in diesem Programm neu deklarieren kann.

Ersetze diese "unit Gerd"-Routinen durch die "offiziellen" Routinen. Erstens weiß man nie, was man sich mit unnötigem Code einschleppt. Und zweitens müssten wir hier deinen Code nicht so stark verändern, um ihn compilieren zu können.
die unit gerd ist noch aus windows-tagen. uppercase unter delphi hat mir damals die umlaute nicht richtig umgesetzt. deshalb habe ich mir die routinen geschrieben. sie finden in meinem aktuellen proggi ja gar keine verwendung.

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

Patito hat geschrieben:
wp_xyz hat geschrieben:
ich tippe ganz stark darauf, daß es an meinem betriebssystem liegt, denn ich sehe keinen fehler in meinem code.
Nach aller Erfahrung ist das nicht so. Und ich kann mir nicht vorstellen, dass so ein fundamentaler Fehler noch niemandem aufgefallen ist.
Also unter Linux hatte ich auch erst mal seltsame Probleme. Da ich eigentlich fast nur für Windows
programmiere, habe ich da aber nicht weiter nachgeforscht.

Was mich auf den ersten Blick gestört hat:
- In Verbindung mit ShowModal() gab es reichlich anomales Verhalten
- TEvent hat nicht funktioniert

Ich denke ein großes Windows-Projekt einfach so zu portieren wird immer schwierig sein.
Man sollte lieber klein anfangen und nach und nach die Features, die man verwendet, austesten.

Desktop-Entwicklung für Linux ist kein Mainstream - wenn man etwas komplexes macht, bewegt man sich schnell auf Neuland.
Ausserdem besteht immer auch die Möglichkeit, dass das Problem einfach an der speziellen Installation vom Linux liegt...

Meine Erfahrung mit einem kleineren Projekt (36 Units) war folgende:
Portierung Delphi-> Lazarus unter Windows:
ein paar Stunden Arbeit - Anwendung läuft praktisch identisch

Portierung Lazarus Windows -> Lazarus Linux:
ein ganzer Tag Arbeit - einige ungelöste GUI-Anomalitäten
danke für deine info. also bin ich nicht der einzige, der mit lazarus und "bestimmten" linux-versionen probs hat.
wir haben hier noch 3 pcs, mit verschiedenen linux-versionen. werde dort mal testen.
ich tippe ja nach wie vor - wie du - auf meine spezielle linux-installation.

wp_xyz
Beiträge: 5139
Registriert: Fr 8. Apr 2011, 09:01

Re: Showmodal

Beitrag von wp_xyz »

Ich habe eben Michls Schmalspur-Version unter Ubuntu kompiliert. Zunächst war alles ok, aber plötzlich hat das Programm nicht mehr auf einen Klick auf dem Schließen-Kreuz reagiert, genausowenig auf einem Button. Nach einigem Suchen fand ich, dass das Programm auf einem Breakpoint angehalten hat. Da aber die IDE - zumindest bei meiner Konfiguration (an der ich aber kaum etwas gegenüber der Version aus der Tüte geändert habe) - nicht nach vorne kommt, sieht es so aus, als würde das Programm nicht mehr reagieren. Seltsamerweise war der Breakpoint im Source code auch nicht rot markiert. Ich habe ihn dann über den Menüpunkt "View"/"Debug Windows"/"Breakpoints" gefunden und dort gelöscht. Jetzt läuft das Programm problemlos...

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Showmodal

Beitrag von Michl »

:D Das ist ja mal was, diesen unsichtbaren Breakpoint habe ich auch. Habe aber nicht darauf geachtet, da er nach dem Start dann bei mir wieder rot markiert war, bekomme ihn aber auch nur, wie von Dir beschrieben, weg...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

Michl hat geschrieben::D Das ist ja mal was, diesen unsichtbaren Breakpoint habe ich auch. Habe aber nicht darauf geachtet, da er nach dem Start dann bei mir wieder rot markiert war, bekomme ihn aber auch nur, wie von Dir beschrieben, weg...
scheint wohl doch nicht alles so rund zu laufen mit lazarus und dem compiler :)

ich mache erstmal hier einen break und beende (vorübergehend) den thread, weil ich das gefühl habe, daß wir irgendwie feststecken. ich habe mir jetzt ein herz genommen und angefangen, ein komplett neues projekt zu starten und alle elemente nach und nach zu übertragen (auch wenn ich befürchte, daß ich irgendwann wieder an demselben punkt angekommen bin - darf gar nicht über die arbeit nachdenken).

es gibt bei meinem proggi noch ein problem. aber dazu erstelle ich einen weiteren thread, daß das getrennt behandelt werden kann.

erst einmal vielen dank an alle, die sich für mein problem interessier(t)en und mir mit ihren tipps tatkräftig unter die armen gegriffen haben.

Merci vielmals.

HC

Antworten