Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Windows 8.1 Pro mit Firbird 2.5.3 (https://www.delphipraxis.net/184045-windows-8-1-pro-mit-firbird-2-5-3-a.html)

Walter Landwehr 10. Mär 2015 09:27

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Hallo Frank,

zunächst mal vielen Dank für Deine Mühe. Ich habe die Anwendung jetzt mal so umgebaut. Leider hängt sich das Programm jetzt im Login auf.

Delphi-Quellcode:
procedure TLoginFrm.FormCreate(Sender: TObject);
begin
  Design;
  MandantenCbx.KeyValue := dmMain.MandantenQry.FieldByName('MandantenNr').AsInteger; <-------- An dieser Stelle hängt sich das Programm auf, nichts ist mehr möglich.
  PasswortQry.open;
  PasswortQry.FetchAll;
  LeseLetzterBenutzer;
  PasswortEdit.Text := '';
  if dmMain.ibqryOptionen.State = dsinactive then
     dmMain.ibqryOptionen.Open;
end;
Der Aufruf des Login Formular geschieht im Modul wie folgt:

Delphi-Quellcode:
  With TLoginFrm.Create(Self) do
  begin
    ShowModal;
    Release;
  end;
dmMain.MandantenQry.FieldByName('MandantenNr').AsI nteger kann irgendwie nicht initialisiert werden.

Noch ne Idee hierzu?

mkinzler 10. Mär 2015 09:32

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Existiert das Datenmodul zu diesem Zeitpunkt schon?

Walter Landwehr 10. Mär 2015 10:40

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Habe noch ein weiteres Problem. Alle Aufrufe die mit dmMain. beginnen (im gesamten Code) bekomme ich eine Schutzverletzung. Ich denke irgendwie ist das Datenmodul noch nicht da, obwohl alle Befehle im Datenmodul abgearbeitet werden.

mkinzler 10. Mär 2015 10:43

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Erzeuge dieses als erstes.

DeddyH 10. Mär 2015 10:45

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Oder greife einfach nicht im OnCreate auf andere Forms/Module zu.

Walter Landwehr 10. Mär 2015 11:16

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
So habe jetzt einiges Umgebaut, die Anwendung läuft wieder aber beim verlassen auf den Windows 8 Rechnern kommt diese Meldung:

Exception EAccessViolation in Modul NatuPrax.exe bei 0000399D. Zugriffverletzung bei Adresse 0040399D im Modul NatuPrax.exe. Schreiben von Adresse 00000000:

Leider kann man nicht Debuggern, denn nach dem letzten Befehl in der Procdedure
Delphi-Quellcode:
procedure TdmMain.BeforeDestruction;
begin
   // hier das DisConnect
  ibqryOptionen.Close;
  MandantQry.Close;
  if ibconNatuprax_Next.connected = True then
  begin
    ibconNatuprax_Next.CloseTransactions;
    ibconNatuprax_Next.DeallocateStatements;
    ibconNatuprax_Next.Disconnect;
  end;
  if ibconMedikament.connected = True then
  begin
    ibconMedikament.CloseTransactions;
    ibconMedikament.DeallocateStatements;
    ibconMedikament.Disconnect;
  end;
  if ibconMain.Connected then
  begin
    ibconMain.CloseTransactions;
    ibconMain.DeallocateStatements;
    ibconMain.Disconnect;
  end;
  if ibconData.connected = True then
  begin
    ibconData.CloseTransactions;
    ibconData.DeallocateStatements;
    ibconData.Disconnect;
  end;
  inherited;
end;
kommt ja nichts mehr. Die Meldung kommt nach ca.4 sec. und NatuPrax bleibt im Task.

Nun bin ich mit meinem Latein am Ende und schier verzweifelt.

mkinzler 10. Mär 2015 11:32

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Dann greifts Du auf etwas zu, was schon nicht mehr existiert.

Btw. Prüfe einen Boolean nie auf True
es reicht:

Delphi-Quellcode:
if ibconMedikament.connected then

TRomano 10. Mär 2015 12:00

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Vielleicht solltest Du derart Prüfen, wenn Du dir nicht sicher bist, ob die verwendeten Objekte noch existieren:

Delphi-Quellcode:
if Assigned(ibconNatuprax_Next) and ibconNatuprax_Next.connected then begin
   // ... mache irgend etwas mit [B]ibconNatuprax_Next[/B]
end;

FBrust 10. Mär 2015 14:45

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Hallo,

wenn ich das richtig sehe, führst Du das Disconnect im Datenmodul (dmMain) durch.

Hast Du mal versucht, das Disconnect im OnClose-Ereignis Deines Hauptformulars zu machen?


Gruß
Frank

Walter Landwehr 10. Mär 2015 15:11

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ja habe ich auch schon versucht. Bringt aber nichts.

Ich habe es soweit das keine Schutzverletzung mehr kommt sondern Windows 8.1 Rechner melden beim Schließen des Programms.

NatuPrax.exe funktioniert nicht mehr.
Das Programm wird aufgrund eines Problems nicht richtig ausgeführt. Das Programm wird geschlossen und Sie werden benachrichtigt, wenn eine Lösung verfügbar ist.

Im Anhang nochmals mein veränderter Code.

mkinzler 10. Mär 2015 15:36

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Wie soll das ohne erzeugtes Datenmodul funktionieren?

TRomano 10. Mär 2015 15:37

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Auf die Schnelle waren die Quellen nicht so gut zu verstehen. Vielleicht solltest Du ein TDataModule dafür benutzen, wofür es geschaffen wurde: zum Anlegen der Connections, der Tables/Queries, der Transactions und ein paar grundsätzlicher (Datenbank-) Funktionen.
In der DPR vermisse ich das Erzeugen des Datenmoduls (ist auskommentiert) und in jenem gibt es eine Funktion zum Erzeugen der MainForm ?
Wie schon einige Andere geschrieben hatten würde ich das Datenmodul vor der Mainform erzeugen, dort die Verbindung zur DB herstellen und auch beim Schließen der Applikation wieder kappen. Damit solltest Du die Kontrolle behalten. Das Login-Formular bindest Du in die Mainform ein, da ich davon ausgehe, dass Du dort einen Button (oder was auch immer) zum Connecten hast. So lange "leben" auch alle deine Module und Du hast weniger Probleme mit AV´s ....

dataspider 10. Mär 2015 16:13

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Zitat:

Zitat von mkinzler (Beitrag 1292951)
Wie soll das ohne erzeugtes Datenmodul funktionieren?

Er erzeugt es doch:
Delphi-Quellcode:
function dmMain: TdmMain;
begin
   if FdmMain = nil then
   begin
     FdmMain := TdmMain.Create(Application);
     FdmMain.AfterConstruction;
   end;
   Result := FdmMain;
end;
Walter,
AfterConstruction musst du nicht aufrufen, du vererbst diese Methode und diese wird nach dem Erzeugen automatisch aufgerufen.
Also nimm das raus. Macht zwar nichts (glaub ich), aber ist Quatsch.

Frank

mkinzler 10. Mär 2015 16:26

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Und wird das irgendwo aufgerufen? Und wenn ja vor dem OnCreate der Hauptform? Denn da wird die LoginForm errzeugt, welche darauf zugreifen will.

Der Code ist die Vollendung von Obfuscation.

Walter Landwehr 10. Mär 2015 16:28

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
OK Frank, habe ich rausgenommen. Jetzt kommen keine Meldungen mehr, aber NatuPrax ist nachdem beenden im Task Manager immer noch zu sehen. NatuPrax verschwindet also nicht aus dem Speicher. Das ist blöd, weil ich ein Mehrfach Start verhindere. Sonst funktioniert alles perfekt man kann damit arbeiten aber wie gesagt beim Beenden.

dataspider 10. Mär 2015 16:36

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Walter,

möglicherweise ist das Problem ja gar nicht das Datenmodul.

Ich würde mal zum Test folgendes machen:

Im MainForm im OnClose und OnCloseQuery ein Exit; in die erste Zeile, damit der Code nicht ausgeführt wird.
(Du schreibst ja noch in die Registrierung etc.)

Ein Button auf das MainForm und dort dmMain.Free; in den Code.

Vor Beenden des Programmes auf den Button und dmMain bewusst zerstören, dann beenden.

Was passiert dann?

Frank

dataspider 10. Mär 2015 16:41

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Zitat:

Zitat von mkinzler (Beitrag 1292954)
Und wird das irgendwo aufgerufen? Und wenn ja vor dem OnCreate der Hauptform? Denn da wird die LoginForm errzeugt, welche darauf zugreifen will.

die globale Variable wurde durch eine Funktion ersetzt.
Somit wird das Datenmodul bei der ersten Verwendung von dmMain.WasAuchImmer erzeugt...

Zitat:

Zitat von mkinzler (Beitrag 1292954)
Der Code ist die Vollendung von Obfuscation.

Da hätte selbst die NSA dran zu kauen... :)

Frank

Walter Landwehr 10. Mär 2015 16:48

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Hallo Frank, habe ich gemacht, aber das Ergebnis ist gleich. Beim beenden steht es weiterhin im Speicher. Ich muss noch dazu sagen das auch der Compiler das Programm nicht richtig beendet.

dataspider 10. Mär 2015 17:09

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Zitat:

Zitat von Walter Landwehr (Beitrag 1292958)
Hallo Frank, habe ich gemacht, aber das Ergebnis ist gleich. Beim beenden steht es weiterhin im Speicher. Ich muss noch dazu sagen das auch der Compiler das Programm nicht richtig beendet.

Sicher auch meine letzte Idee.
Den Timer tmMedikament würde ich testhalber auch deaktivieren im FormClose.

Hast du noch Code im Finalization irgendeiner Unit?
Die meisten Komponentenbibliotheken machen regen Gebrauch davon. Am Ende liegt es an TMS oder dem Reportgenerator...

Frank

Walter Landwehr 10. Mär 2015 17:54

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Ok ich mache morgen weiter, bin jetzt fix und fertig.

Walter Landwehr 24. Mär 2015 11:27

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
So ich möchte jetzt mal ein Feedback geben zu meinem Problem.

Windows 8.1 beendet die Programme nicht komplett sondern lässt diese im Taskmanager unter Hintergrundprogramme weiterlaufen. Der Task kommt nach etwa 5 Sekunden und genau zu diesem Zeitpunkt kommt auch auf dem Desktop die Schutzverletzung. Nun ist die Frage wie beendet man unter Windows 8.1 das Programm vollständig, so das es nicht als Hintergrundtask weiterlauft. Hat jemand hierzu eine Idee? Meine Anwendung liegt auf dem Server und wird mit einer Verknüpfung auf dem Client aufgerufen. Vielleicht gibt es ja auch in der Registry eine Einstellung um Programme sofort zu beenden. Habe im WEB hierzu leider nicht gefunden. Es gibt natürlich den Befehl "Taskkill /F /IM Programmexename", nur der nützt nichts, weil meine Anwendung ja noch läuft.

Hat jemand noch eine Idee dazu? Danke im voraus.

mkinzler 24. Mär 2015 11:30

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Das wäre mir neu. Wie beendest Du den momentan?

Walter Landwehr 24. Mär 2015 12:47

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Ganz Normal mit Close. Funktioniert auch bei allen Rechnern, nur eben nicht im Netzwerk mit Windows 8.1 Clients.

hoika 30. Mär 2015 04:36

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Hallo,
das kann ich nicht glauben.
Was passiert, wenn du statt Close testweise mal Halt benutzt?


Erzeuge mal ein leeres VCL-Projekt und starte es aus deinem Netzlaufwerk.
Das Programm beendet sich sofort, hoffe ich :)

Ich habe eher die Vermutung, dass noch ein Thread läuft.


Heiko

dataspider 30. Mär 2015 06:27

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Ich erinnere mich an ein ähnliches Problem, wo fehlende Rechte dies verursacht haben.
Passiert das auch mit anderen EXE' n, wenn du diese vom Server per Verknüpfung startest?
Passiert es auch als Administrator (also auch Admin - Rechte auf dem Server)?

Frank

Walter Landwehr 17. Apr 2015 16:21

AW: Windows 8.1 Pro mit Firbird 2.5.3
 
Nein andere Anwendungen laufen problemlos. Aber welcher Thread soll hier noch laufen? Ich wollte das ganze mal umsetzen nach DXE7, aber Embarcadero kann oder will diese Version nicht mehr liefern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz