Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenbank Anwendung weitergeben. (https://www.delphipraxis.net/190418-datenbank-anwendung-weitergeben.html)

stathis 1. Okt 2016 21:12

Datenbank: mysql • Version: - • Zugriff über: -

Datenbank Anwendung weitergeben.
 
Hallo,
Ich habe ein anwendung programmiert, die auf ein mysql webserver zugreift und auf mein PC (Windows 10. auf dieses pc habe die anwendung mit delphi xe8 programmiert)
laueft ohne Probleme.
Wenn diese anwendung in meine Pc in Buero (windows xp) weitergebe bekomme das fehler
access violation an adress 00000000
das pasiert auch auf andere pcs mit windows 10

Diese fehler ersheint wenn auf mysql serve zugreife sonst die Anwendung laueft einwantfrei.

Ich habe libmysql.dll und dbxmys.dll in ziel PC in szstem32 ordner kopiert, soll ich noch andere files kopieren?

entschuldingen sie mir fuer meine Deutsche sprache :(


ich danke Ihnen

jaenicke 1. Okt 2016 23:09

AW: Datenbank Anwendung weitergeben.
 
Ohne Quelltext oder mehr Details lässt sich dazu nur sagen, dass irgendein Objekt nicht initialisiert sein wird.

Du kannst MadExcept oder Eurekalog einbinden. Die sollten dir die Fehlerstelle genauer zeigen.

stathis 1. Okt 2016 23:45

AW: Datenbank Anwendung weitergeben.
 
hallo
ich dankex fuer Antwort

mit dem Eurekalog
bekomme das:

EurekaLog 7.5.0.0

Exception:
---------------------------------------------------------------------------------------------------------
2.2 Address: 00000000
2.5 Type : EAccessViolation
2.6 Message: Access violation at address 00000000 in module 'melikriton.exe'. Read of address 00000000.
2.7 ID : FBF30000
2.11 Sent : 0

User:
-----------------
3.2 Name : user
3.3 Email:

Steps to reproduce:
------------
8.1 Text:


EurekaLog 7.5.0.0

Exception:
---------------------------------------------------------------------------------------------------------
2.2 Address: 00000000
2.5 Type : EAccessViolation
2.6 Message: Access violation at address 00000000 in module 'melikriton.exe'. Read of address 00000000.
2.7 ID : FBF30000
2.11 Sent : 0

User:
-----------------
3.2 Name : user
3.3 Email:

Steps to reproduce:
------------
8.1 Text:


Call Stack Information:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|Methods |Details|Stack |Address |Module |Offset |Unit |Class |Procedure/Method |Line |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|Running Thread: ID=3864; Parent=0; Priority=0 |
|Class=; Name=MAIN |
|DeadLock=0; Wait Chain=Δεν ήταν δυνατό να εντοπιστεί η καθορισμένη διαδικασία |
|Comment= |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|00000020|04 |0012F7C8|007A6E37|melikriton.exe|003A6E37|Data.DB XDynalink |TDBXDynalinkDriverCommonLoader|LoadDriverLibraryA ndMethodTable |865[16] |
|00000020|04 |0012FC84|0040A096|melikriton.exe|0000A096|System | |_HandleFinally |19690[58] |
|00000020|04 |0012FCA8|007A199A|melikriton.exe|003A199A|Data.DB XDynalinkNative|TDBXNativeMethodTable |LoadMethods |131[9] |
|00000020|04 |0012FCB0|007A6E11|melikriton.exe|003A6E11|Data.DB XDynalink |TDBXDynalinkDriverCommonLoader|LoadDriverLibraryA ndMethodTable |861[12] |
|00000020|04 |0012FCF4|007A6B13|melikriton.exe|003A6B13|Data.DB XDynalink |TDBXDynalinkDriver |LoadDriver |769[5] |
|00000020|04 |0012FD18|007A1858|melikriton.exe|003A1858|Data.DB XDynalinkNative|TDBXDynalinkDriverNative |CreateConnection |87[1] |
|00000020|04 |0012FD28|00766629|melikriton.exe|00366629|Data.DB XCommon |TDBXDelegateDriver |CreateConnection |11218[0] |
|00000020|04 |0012FD2C|0076C67C|melikriton.exe|0036C67C|Data.DB XCommon |TDBXConnectionBuilder |CreateConnection |14806[18] |
|00000020|04 |0012FD80|0075D0AB|melikriton.exe|0035D0AB|Data.DB XCommon |TDBXConnectionFactory |GetConnection |6743[12] |
|00000020|04 |0012FDC8|0075CFC1|melikriton.exe|0035CFC1|Data.DB XCommon |TDBXConnectionFactory |GetConnection |6722[0] |
|00000020|04 |0012FDCC|00877A41|melikriton.exe|00477A41|Data.Sq lExpr |TSQLConnection |DoConnect |2510[56] |
|00000020|04 |0012FE54|007D28A9|melikriton.exe|003D28A9|Data.DB |TCustomConnection |SetConnected |3569[8] |
|00000020|04 |0012FE60|007D2864|melikriton.exe|003D2864|Data.DB |TCustomConnection |Open |3552[0] |
|00000020|04 |0012FE64|008770EF|melikriton.exe|004770EF|Data.Sq lExpr |TSQLConnection |CheckConnection |2323[4] |
|00000020|04 |0012FE70|0087B33F|melikriton.exe|0047B33F|Data.Sq lExpr |TCustomSQLDataSet |CheckConnection |3975[2] |
|00000020|04 |0012FE88|0087B74C|melikriton.exe|0047B74C|Data.Sq lExpr |TCustomSQLDataSet |OpenCursor |4064[3] |
|00000020|04 |0012FEA4|007E5FC5|melikriton.exe|003E5FC5|Data.DB |TDataSet |SetActive |12424[12] |
|00000020|04 |0012FEC0|007E5E01|melikriton.exe|003E5E01|Data.DB |TDataSet |Open |12380[1] |
|00000020|04 |0012FEC8|00899A87|melikriton.exe|00499A87|Unit4 |TForm4 |FormCreate |161[5] |
|00000020|04 |0012FEE8|006D44AD|melikriton.exe|002D44AD|Vcl.For ms |TCustomForm |DoCreate |3746[3] |
|00000020|04 |0012FF0C|006D40B1|melikriton.exe|002D40B1|Vcl.For ms |TCustomForm |AfterConstruction |3629[1] |
|00000020|04 |0012FF18|0040935D|melikriton.exe|0000935D|System | |_AfterConstruction |17339[2] |
|00000020|04 |0012FF20|0040936D|melikriton.exe|0000936D|System | |_AfterConstruction |17340[3] |
|00000020|04 |0012FF3C|006D4063|melikriton.exe|002D4063|Vcl.For ms |TCustomForm |Create |3619[35] |
|00000020|04 |0012FF74|006DEE46|melikriton.exe|002DEE46|Vcl.For ms |TApplication |CreateForm |10471[13] |
|00000020|04 |0012FFAC|008A6764|melikriton.exe|004A6764|melikri ton | |Initialization |29[6] |
|00000020|03 |0012FFC4|7C817064|kernel32.dll |00017064|kernel32 | | (possible RegisterWaitForInputIdle+70)| |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Modules Information:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|Handle |Name |Description |Version |Size |Modified |Path |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|00400000|melikriton.exe| |1.0.0.0 |22628820|2016-10-02 01:30:27|D:\melikriton karta\Win32\Debug\ |
|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Processes Information:
----------------------


Assembler Information:
--------------------------------------------------------------------
; Base Address: $0, Allocation Base: $0, Region Size: 65536
; Allocation Protect: N/A, Protect: PAGE_NOACCESS
; State: MEM_FREE, Type: N/A
;
00000000 ?? ; unaccessible location ; <-- EXCEPTION

Registers:
-----------------------------
EAX: 00000000 EDI: 0012FCB4
EBX: 0210DAC8 ESI: 00000000
ECX: 00000000 EBP: 0012FCF0
EDX: 020FFC28 ESP: 0012F7C8
EIP: 00000000 FLG: 00210297
EXP: 00000000 STK: 0012F7C8

Stack: Memory Dump:
------------------ ---------------------------------------------------------------------------

Neumann 2. Okt 2016 10:41

AW: Datenbank Anwendung weitergeben.
 
Verbindet sich deine Anwendung direkt mit Mysql? Sieht so aus. Kann sein das MySql nur Verbindungen von bestimmten Adressen zulässt. Würde ich mal prüfen.

Direkte Verbindungen sind aber auch sonst problematisch, besser ist da eine über z.B http.

Gibt hier und woanders einige Infos dazu, deshalb keine weiteren Details

stathis 2. Okt 2016 11:25

AW: Datenbank Anwendung weitergeben.
 
Ja mein Anwendung verbindet direct mit mysql.
Die Anwendung läuft von mein Laptop einwandfrei (in diesem laptop habe ich die Programmiert), egal in welchem netz verbindet ist.

Also ich glaube wenn ich in Buro-Pc delphi xe8 installiere und da das programm compile wird dann auch da einwandfrei laufen. Aber das ist kein loesung

ich danke
Stathis

Neumann 2. Okt 2016 11:35

AW: Datenbank Anwendung weitergeben.
 
Hat glaube ich nichts damit zu tun wo man das Programm compiliert. Aber es auf dem Rechner zu debuggen wo es nicht läuft könnte helfen das Problem zu finden.

jaenicke 2. Okt 2016 11:38

AW: Datenbank Anwendung weitergeben.
 
Da der letzte Eintrag im Stacktrace LoadDriverLibraryA ndMethodTable ist, sieht es für mich so aus als ob da eine DLL fehlt oder es eine falsche Version ist.

Hast du mal im Quelltext der genannten Unit geschaut was an der Stelle passiert?

stathis 2. Okt 2016 12:11

AW: Datenbank Anwendung weitergeben.
 
ja ich meine auch das ein dll fehlt aber welche?
Ich habe libmysql.dll und dbxmys.dll in ziel PC in system32 ordner kopiert
was noch soll ich kopieren?


Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DBXMySQL, Data.FMTBcd, Data.DB,
  Data.SqlExpr, Vcl.StdCtrls, Vcl.Buttons, Vcl.Grids, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Panel2: TPanel;
    BitBtn1: TBitBtn;
    SQLConnection1: TSQLConnection;
    SQLQuery1: TSQLQuery;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 i,ncol,z: integer;
 uid : string;
begin
   for nCol := 0 to stringgrid1.ColCount - 1 do
  begin
    stringgrid1.Cols[nCol].Clear;
  end;
    stringgrid1.Cells[0,0] := 'ID';
  stringgrid1.Cells[1,0] := 'UID &#922;&#940;&#961;&#964;&#945;&#962;';
  stringgrid1.Cells[2,0] := '&#928;&#972;&#957;&#964;&#959;&#953;';
  stringgrid1.Cells[3,0] := '&#928;&#972;&#957;&#964;&#959;&#953; &#931;&#973;&#957;&#959;&#955;&#959;';
  stringgrid1.Cells[4,0] := '&#919;&#956;&#949;&#961;&#959;&#956;&#951;&#957;&#943;&#945;';
  stringgrid1.Cells[5,0] := '&#911;&#961;&#945;';

sqlquery1.sql.Clear;

 SQLquery1.SQL.add ('Select id,UID,points,TotalPoints,date,time from karta');
   sqlquery1.open;
  SQLquery1.First;
 i:=0;
  while not SQLquery1.EOf do begin
    i:=i+1;
    stringgrid1.RowCount := i+2;
    stringgrid1.Cells[0,i] := inttostr(SQLquery1.Fieldbyname('id').asinteger);
    stringgrid1.Cells[1,i] := SQLquery1.Fieldbyname('UID').asString;
    stringgrid1.Cells[2,i] := inttostr(SQLquery1.Fieldbyname('points').asinteger);
    stringgrid1.Cells[3,i] := inttostr(SQLquery1.Fieldbyname('TotalPoints').asinteger);
    stringgrid1.Cells[4,i] := SQLquery1.Fieldbyname('date').asString;
    stringgrid1.Cells[5,i] := SQLquery1.Fieldbyname('time').asString;
       SQLquery1.Next;
  end;

  sqlquery1.sql.Clear;
end;

end.
----------SQL CONNECTION PARAMS -----------------
DriverUnit=Data.DBXMySQL
DriverPackageLoader=TDBXDynalinkDriverLoader,DbxCo mmonDriver160.bpl
DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriv erLoader,Borland.Data.DbxCommonDriver,Version=16.0 .0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b 1b
MetaDataPackageLoader=TDBXMySqlMetaDataCommandFact ory,DbxMySQLDriver160.bpl
MetaDataAssemblyLoader=Borland.Data.TDBXMySqlMetaD ataCommandFactory,Borland.Data.DbxMySQLDriver,Vers ion=16.0.0.0,Culture=neutral,PublicKeyToken=91d62e bb5b0d1b1b
GetDriverFunc=getSQLDriverMYSQL
LibraryName=dbxmys.dll
LibraryNameOsx=libsqlmys.dylib
VendorLib=LIBMYSQL.dll
VendorLibWin64=libmysql.dll
VendorLibOsx=libmysqlclient.dylib
HostName=**************
User_Name=*********
Password=***********
MaxBlobSize=-1
LocaleCode=0000
Compressed=False
Encrypted=False
BlobSize=-1
ErrorResourceFile=
Database=*************
ServerCharSet=utf8

RWarnecke 2. Okt 2016 12:14

AW: Datenbank Anwendung weitergeben.
 
Zitat:

|00000020|04 |0012FEC8|00899A87|melikriton.exe|00499A87|Unit4 |TForm4 |FormCreate |161[5] |
Die Zeile aus deinem Eurekalog ist der Auslöser für Deine Access Violation. Was wird hier im FormCreate gemacht in der Unit4 ?

Edit:
Bitte den Quelltext mit einfassen. Damit lässt sich Quelltext leichter lesen für uns, da er entsprechend formatiert wird.

TBx 2. Okt 2016 12:16

AW: Datenbank Anwendung weitergeben.
 
Handelt es sich bei dem Rechner im Büro um eine 64 Bit maschine?
Dann gehören die DLLs nämlich ins SysWOW64-Verzeichnis.
Oder Du legst die Dlls in Dein Anwendungsverzeichnis.

stathis 2. Okt 2016 13:17

AW: Datenbank Anwendung weitergeben.
 
Zitat:

Zitat von RWarnecke (Beitrag 1349494)
Zitat:

|00000020|04 |0012FEC8|00899A87|melikriton.exe|00499A87|Unit4 |TForm4 |FormCreate |161[5] |
Die Zeile aus deinem Eurekalog ist der Auslöser für Deine Access Violation. Was wird hier im FormCreate gemacht in der Unit4 ?

Edit:
Bitte den Quelltext mit einfassen. Damit lässt sich Quelltext leichter lesen für uns, da er entsprechend formatiert wird.

ich habe ein sql anfrage im unit4 formcreate deswegen kommt die fehler
Die fehler kommt nur wenn ein sqlanfrage rufe sonst ist kein Problem

procedure TForm4.FormCreate(Sender: TObject);
begin
ComboBox1.Clear; //
sqlquery1.sql.Clear;
SQLquery1.SQL.Add('Select DISTINCT UID');
SQLquery1.SQL.Add('From karta');
sqlquery1.open;
SQLquery1.First;

while not sqlQuery1.Eof do
begin
ComboBox1.Items.Add(SQLquery1.Fieldbyname('UID').a sString);
sqlquery1.Next;
end;
end;

stathis 2. Okt 2016 13:18

AW: Datenbank Anwendung weitergeben.
 
Zitat:

Zitat von TBx (Beitrag 1349495)
Handelt es sich bei dem Rechner im Büro um eine 64 Bit maschine?
Dann gehören die DLLs nämlich ins SysWOW64-Verzeichnis.
Oder Du legst die Dlls in Dein Anwendungsverzeichnis.

Nein es ist Windows xp 32bit

stathis 2. Okt 2016 13:21

AW: Datenbank Anwendung weitergeben.
 
ich glaube das Problem liegt nicht in Code sondern fehlt noch irgendeine dll oder andere datei.

stathis 3. Okt 2016 14:41

AW: Datenbank Anwendung weitergeben.
 
keine idee?

taveuni 4. Okt 2016 08:38

AW: Datenbank Anwendung weitergeben.
 
Starte auf Deinem Laptop die Anwendung. Starte den ProcessExplorer. Markiere im Processexplorer Deine Anwendung. Gehe oben auf "ShowLowerPane" (CTRL+L). Prüfe welches DLL's Deine Anwendung geladen hat. Mach das Gleiche auf einem Rechner wo es nicht funktioniert. Finde den Unterschied.

stathis 4. Okt 2016 22:15

AW: Datenbank Anwendung weitergeben.
 
Zitat:

Zitat von taveuni (Beitrag 1349631)
Starte auf Deinem Laptop die Anwendung. Starte den ProcessExplorer. Markiere im Processexplorer Deine Anwendung. Gehe oben auf "ShowLowerPane" (CTRL+L). Prüfe welches DLL's Deine Anwendung geladen hat. Mach das Gleiche auf einem Rechner wo es nicht funktioniert. Finde den Unterschied.

Hallo danke fuer Antwort
gibt es viele unterschiede
z.b
Im laptop
dbxmys.dll -> C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\bin\dbxmys.dll
auf dem andere Rechner habe keine solce ordner

Im laptop
libmysql.dll -> C:\Windows\SysWOW64\libmysql.dll
auf dem andere Rechner habe keine solce ordner ist 32 Bit

in delphi xe8 oben in menu steht windows 32bit

was kann ich machen?

stathis 4. Okt 2016 22:24

AW: Datenbank Anwendung weitergeben.
 
Liste der Anhänge anzeigen (Anzahl: 2)
Und die beide txts von Processexplorer

hoika 4. Okt 2016 22:54

AW: Datenbank Anwendung weitergeben.
 
Hallo,
wir wird der Pfad zu mysql-Daten-Bank ermittelt?
(Ich kenn mich mit mysql nicht gut aus).

Ist der Pfad vielleicht in TForm4.FormCreate noch gar nicht korrekt
und wird erst zur Laufzeit ermittelt?

Wenn das Form4 in der DPR schon vorher erzeugt wird,
könnte genau das die Ursache sein.

taveuni 5. Okt 2016 06:31

AW: Datenbank Anwendung weitergeben.
 
Also die Anwendung welche funktioniert lädt dbxmys.dll und libmysql.dll. Die andere nicht. Ich kenn mich mit Delphi und MySql nicht aus. Aber wie verbindest Du überhaupt? Via ODBC? Oder "Native"? Vermutlich musst Du den dbExpress MySql 5.x.xx driver auf dem Zielsystem installieren?

http://docwiki.embarcadero.com/RADSt...en_weitergeben

Wenn Du solchen Problemen aus dem Weg gehen willst: Kauf dir die Devart Library. Mit dieser läuft die Kommunikation nativ via Protokoll. Ohne irgendwelche DLL's.

Bernhard Geyer 5. Okt 2016 07:13

AW: Datenbank Anwendung weitergeben.
 
Zitat:

Zitat von taveuni (Beitrag 1349777)
Wenn Du solchen Problemen aus dem Weg gehen willst: Kauf dir die Devart Library. Mit dieser läuft die Kommunikation nativ via Protokoll. Ohne irgendwelche DLL's.

Und zusätzlich vermeidest du die GPL-Falle von MySQL


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 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