Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi exe startet nur auf Entwickler-PC (https://www.delphipraxis.net/151141-exe-startet-nur-auf-entwickler-pc.html)

hirsch 7. Mai 2010 07:02


exe startet nur auf Entwickler-PC
 
Liebes Forum,
wieder einmal brauche ich Eure Hilfe.
Habe bereits alles nach diesem Problem durchsucht und nichts gefunden.
Ich habe ein Programm gemacht, das mit Daten jongliert, die in der MySQL-Tabellen abgelegt sind. Das funktioniert einwandfrei, eben aber nur auf dem Entwickler-PC. Ich habe es mit RAD-Studio 2007 erstellt.
Wenn ich die Datenbank auf einen anderen (nicht-Entwicker-PC) installiere, die Tabellen hineinkopiere und dann mein Programm starten will, kommt nur kurz die Sanduhr (zu dieser Zeit ist mein Programm auch im Taskmanager zu sehen) und dann geht die Sanduhr weg, (jetzt ist das Programm auch aus dem Taskmanager verschwunden), und das wars dann. Im Ereignisprotokoll ist nirgends ein Ereignis aufgetaucht.
Achja der Entwicker-PC ist XP-SP3, und die nicht-Entwickler-PC's ebenfalls.

Ich habe keine Ahnung wo ich ansetzen soll.
Könnt Ihr mir bitte helfen?

hoika 7. Mai 2010 07:07

Re: exe startet nur auf Entwickler-PC
 
Hallo,

Zitat:

die in der MySQL-Tabellen abgelegt sind
Und wie erfolgt der Zugriff, alles selber gecodet ? Wohl eher nicht ...

Es fehlt auf jeden Fall die libmysql.dll.

Suche mal in Google.

Bei MS gibt es den "Dependancy Walker",
damit kann man sich die statisch verlinkten DLL's ausgeben lassen.
Den würde ich mal auf dem "anderen" Rechner benutzen.


Heiko

himitsu 7. Mai 2010 07:11

Re: exe startet nur auf Entwickler-PC
 
Zitat:

Zitat von hoika
damit kann man sich die statisch verlinkten DLL's ausgeben lassen.
Den würde ich mal auf dem "anderen" Rechner benutzen.

Wenn statisch gelinkte DLLs fehlen, dann gibt Windows eine passende Meldung aus.
(dynamisch gelinkte DLLs muß der Programmierer selber behandeln)

[add]
Du könntest in dein Programm ein Logsystem integrieren und dort verschiedene Stellen loggen.
So findst du raus, wie weit dein Programm in der Bearbeitung kommt.

hirsch 7. Mai 2010 08:01

Re: exe startet nur auf Entwickler-PC
 
Danke für Eure Antworten.
Das mit dem Log habe ich schon integriert.
Beim ersten Create des ersten Forms, soll es in ein Log schreiben:'Form1 kreiert'.
Das wird nicht geschrieben auf dem nicht-Entwickler-PC.

@hoika
Die Datenanbindung geschieht über dbxexpress.
Die libMySQL.dll ist im system32 - Ordner.

Den depency walker habe ich gefunden. Werde mit dem mal auf dem nE-PC testen.

hoika 7. Mai 2010 08:17

Re: exe startet nur auf Entwickler-PC
 
Hallo,

dbx braucht auch noch ein paar Ini's .

Siehe hier
1

Das vom Arne Drews.


Heiko

hirsch 7. Mai 2010 08:59

Re: exe startet nur auf Entwickler-PC
 
Die dbxdrivers.ini/dbxconnections.ini sind auf den nE-PC in C:\Dokumente und Einstellungen\All Users\Dokumente\RAD Studio\dbexpress.
In der Registry in HKEY_LOCAL_MACHINE\Software\Borland\BDS\5.0\DBExpr ess
sind Einträge die auf die dbxdrivers.ini/dbxconnections.ini und die dll's zeigen. Das passt also.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Borland\BDS\5.0\DBExpr ess]
"Connection Registry File"="C:\\Dokumente und Einstellungen\\All Users\\Dokumente\\RAD Studio\\dbExpress\\dbxconnections.ini"
"DLLPATH"="C:\\Dokumente und Einstellungen\\All Users\\Dokumente\\RAD Studio\\dbExpress"
"Driver Registry File"="C:\\Dokumente und Einstellungen\\All Users\\Dokumente\\RAD Studio\\dbExpress\\dbxdrivers.ini"

In der dbxconnections.ini, im MySQL-Abschnitt ist richtig drin:
[MYSQLCONNECTION]
DriverName=MySQL
HostName=localhost
Database=Bildertest
User_Name=<username>
Password=<passwort>
BlobSize=-1
ErrorResourceFile=
LocaleCode=0000
Compressed=False
Encrypted=False

Tut aber trotzdem nicht.... :wall:

hirsch 7. Mai 2010 11:02

Re: exe startet nur auf Entwickler-PC
 
Ich glaube auch nicht, dass es an der Datenbankanbindung scheitert,
denn wenn ich den MySQL-Server stoppe und das Progi starte, müsste zumindest ne Fehlermeldung kommen.
Kommt aber nix... tze

HeikoAdams 7. Mai 2010 12:49

Re: exe startet nur auf Entwickler-PC
 
Und wenn Du im Create des Hauptforms nach jedem Schritt einen Eintrag in Dein Log schreibst? Wie weit kommst Du dann?

hirsch 7. Mai 2010 12:52

Re: exe startet nur auf Entwickler-PC
 
Garnicht.
Der NE-PC macht nich nichtmal die logdatei im Ordner.
Das Progi startet einfach nicht.

Übrigends was bedeutet:
[DCC Warnung] Ausgabe.pas(7): W1005 Unit 'FileCtrl' ist plattformspezifisch

Meint er damit, dass es nur auf XP läuft?

sirius 7. Mai 2010 13:02

Re: exe startet nur auf Entwickler-PC
 
Zitat:

Zitat von hirsch
Meint er damit, dass es nur auf XP läuft?

Nur auf Windows.


Edit: Kannst du mal alle Units aufschreiben, die du nutzt.

HeikoAdams 7. Mai 2010 13:06

Re: exe startet nur auf Entwickler-PC
 
dann packe doch mal den kompletten Inhalt von FormCreate in einen Try-Except-Block und lass Dir die Exception-Meldung im Log ausgeben. Vielleicht bringt uns das auch weiter.

hirsch 7. Mai 2010 13:12

Re: exe startet nur auf Entwickler-PC
 
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, jpeg ,DBCtrls, DB, Grids, DBGrids, ComCtrls,
  ExtDlgs, Menus, Mask, DBTables, DBClient, MidasLib, ComObj,ShlObj, FileCtrl;
Das ist alles...

hirsch 7. Mai 2010 13:24

Re: exe startet nur auf Entwickler-PC
 
Delphi-Quellcode:
procedure TMenue.FormCreate(Sender: TObject);
var

IniFile, log                 : TextFile;
zeile                   : String;

label M10;
begin
  //ini Datei einlesen
  try
     b_gestartet:=False;
     if not b_gestartet then
     begin
          AssignFile(IniFile,'bilder.ini');
          Reset(IniFile);
M10:     ReadLn(IniFile,zeile);
          if copy(zeile,1,6)='[Pfad]' then
              ReadLn(IniFile,zeile)
          else
              goto M10;
          StOrdner:=copy(zeile,1,Length(zeile));
          b_Gestartet := True;
          CloseFile(IniFile);
     end;
  except
    AssignFile(log,'log.txt');
    ReWrite(log);
    WriteLn(log,'Fehler aufgetreten');
    CloseFile(log);
  end;
end;
bringt kein log...

DeddyH 7. Mai 2010 14:05

Re: exe startet nur auf Entwickler-PC
 
Mir ist da "MidasLib" aufgefallen. Hast Du die midas.dll auch mit weitergegeben?

hirsch 7. Mai 2010 14:27

Re: exe startet nur auf Entwickler-PC
 
Ja, die Midas.dll ist auf dem ZielSystem im System32-Ordner.

sirius 7. Mai 2010 15:06

Re: exe startet nur auf Entwickler-PC
 
Dann gehe mal bitte in die Projektdatei und setze vor Application.initialize ein log.

DelphiBandit 7. Mai 2010 15:49

Re: exe startet nur auf Entwickler-PC
 
Hallo,

in solch "undurchsichtigen" Fällen vertraue ich meist dem ProcessExplorer von Microsoft (ehemals SysInternals).

http://technet.microsoft.com/en-us/s.../bb896653.aspx

"Show Lower Pane" (STRG-L), dann zeigt er pro Prozess an welche Files/Registry-Keys usw. an. Allerdings müsstest Du Dein Programm dann an irgendeiner Stelle anhalten können. Früher gab es noch einen extra FileMon.exe, leider finde ich den auf der MS-Seite nicht mehr. Der protokollierte auch, wenn die Exe wieder zuging. Bei Bedarf pm, dann sende ich Dir das Teil zu.

hirsch 7. Mai 2010 16:03

Re: exe startet nur auf Entwickler-PC
 
@DelphiBandit
vielen Dank, den Filemon hab ich noch selber bei mir in den alten Downloads gefunden. Vielen Dank.

@Sirius
habe ich gemacht, auch hier wird kein Log angelegt. Der Startet das Ding einfach nicht.

Vielleicht hat auch die explorer.exe nen Schuss.
Muss ich nachher testen.

nahpets 7. Mai 2010 16:17

Re: exe startet nur auf Entwickler-PC
 
Hallo,

schau bitte mal in der Entwicklungsumgebung, ob Du irgendwelche Datenbankobjekte dort geöffnet hast (im Objektinspektor prüfen).

Wenn ja: Alles schließen und die entsprechenden Aufrufe für das Öffnen/Verbinden in das FormCreate packen.
Delphi-Quellcode:
procedure TMenue.FormCreate(Sender: TObject);
var

IniFile, log                 : TextFile;
zeile                   : String;

label M10;
begin
  // Damit hier nicht nur der letzte Fehler drinne steht, sondern ggfls. auch mehrere, bestenfalls alle ;-)
  AssignFile(log,'log.txt');
  ReWrite(log);
  //ini Datei einlesen
  try
     b_gestartet:=False;
     if not b_gestartet then
     begin
          AssignFile(IniFile,'bilder.ini');
          Reset(IniFile);
M10:     ReadLn(IniFile,zeile);
          if copy(zeile,1,6)='[Pfad]' then
              ReadLn(IniFile,zeile)
          else
              goto M10;
          StOrdner:=copy(zeile,1,Length(zeile));
          b_Gestartet := True;
          CloseFile(IniFile);
     end;
  except
    on e : Exception do begin
      WriteLn(log,e.Message); // Damit Du sehen kannst, was für ein Fehler aufgetreten ist.
    end;
  end;
  // Hier alle Datenbankkomponenten ihre Verbindungen aufbauen lassen und dann Tabellen, Abfragen... öffnen.
  // Jeweils in etwa dieser Form:
  Try
    Connection1.Connected := True;
  Except
    on e : Exception do begin
      WriteLn(Log,Connection1.Name + ': ' + e.Message);
    end;
  end;
  Try
    Table12345.Open
  Except
    on e : Exception do begin
      WriteLn(Log,Table12345.Name + ': ' + e.Message);
    end;
  end;
  ...
  CloseFile(log);
end;

hirsch 7. Mai 2010 17:57

Re: exe startet nur auf Entwickler-PC
 
Ne dumme Anfängerfrage noch:
Delphi-Quellcode:
 on e : Exception do begin
ist was?
e habe ich als
Delphi-Quellcode:
var
e                       : Exception;
deklariert.
aber das 'on' kann er garnicht, irgendwie. Was fehlt mir da?
hab ich was nicht kapiert?
aber ich danke nahpets für diesen überaus konstruktiven Beitrag.
So was in der Art wäre nun auch meine Idee gewesen, wusste aber nicht wie ich das korrekt umsetzen sollte.

hirsch 7. Mai 2010 18:54

Re: exe startet nur auf Entwickler-PC
 
Ich habs.

Der Tipp

on e : Exception do begin

der war GOLDWERT.
Vielen Dank an dieser Stelle!!!
Damit habe ich in der Log.txt herausgefunden dass er die ganzen DBX-Sachen nicht finden kann.

Die DBX-e in das Start-Verzeichnis kopiert, und schon lief es.

Ich werde mir das gut merken, dass man sich die Logs schreiben kann.

Hammer.
Vielen Dank nochmal an alle, die sich wie ich einen Kopf gemacht haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr.

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