Autor Beitrag
mexx
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Sa 03.07.04 21:02 
Hi,

ich benutze die TCabFile Komponente zum entpacken von Cabinetdatein. Wenn ich den Aufruf starte, dass er die cab entpacken soll, macht er es. Starte ich aber den Aufruf nach einer anderen Procedure, entpackt er nichts. Woran liegt das? Ich habe es auspobiert. Es liegt wirklich an der folgenden Procedure. Wenn sie ausgeführt wird, entpackt er nichts. Aber welchen Einfluss nimmt der folgende Quelltext auf das Entpacken der Datei.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
OpenDialog1.Execute;

//titanconf öffnen
  titanconf := TiniFile.Create(OpenDialog1.FileName);
  //werte auslesen
  host := titanconf.ReadString('DB','Host''');
  port := titanconf.ReadInteger('DB','port', port);
  user := titanconf.ReadString('DB','user''');
  password := titanconf.ReadString('DB','Password''');
  US := titanconf.ReadString('DB','UnixSocket''');
  DB := titanconf.ReadString('DB','db''');
  UNP := titanconf.ReadString('DB','UseNamedPipe''');
  USSL := titanconf.ReadString('DB','UseSSL''');
  compress := titanconf.ReadString('DB','Compress''');
  TS := titanconf.ReadString('DB','TrySockets''');
  titanconf.Free;


//Verbindung zur DB mit werten herstellen
FMySQL := TMySQLClient.create;

FMysql.Host := host;
FMysql.port := port;
FMySql.user := user;
FMysql.Password := Password;
FMySQL.UnixSocket := US;
FMysql.Db := db;
 IF UNP = 'ja' then
  begin
   FMysql.UseNamedPipe := true;
  end;
 IF UNP = 'nein' then
  begin
   FMysql.UseNamedPipe := false;
  end;
 IF USSL = 'ja' then
  begin
   FMysql.UseSSL := true;
  end;
 IF USSL = 'nein' then
  begin
   FMysql.UseSSL := false;
  end;
 IF compress ='ja' then
  begin
   FMysql.Compress := true;
  end;
 IF compress ='nein' then
  begin
   FMysql.Compress := false;
  end;
 IF ts = 'ja' then
  begin
   FMysql.TrySockets := true;
  end;
 IF ts = 'nein' then
  begin
   FMysql.TrySockets := false;
  end;

IF FMySql.Connect then
 begin

  MessageDlg('Datenbankverbindung konnte aufgebaut werden.', mtInformation, [mbOk], 0);
  FMySQL.destroy;
  Label10.Caption := 'OK';
  Form1.button1.Enabled := true;
 end
  else

    MessageDlg('Fehler in der Datenbankverbindung ' + FMysql.LastError, mtError, [mbOk], 0);


procedure install;
begin
  Form1.CABFile1.CABFile := 'data.cab';
  Form1.CABFile1.TargetPath := 'C:Windowsmp2ico';
  Form1.CABFile1.ExtractAll;
end;


Moderiert von user profile iconMotzi: Code- durch Delphi-Tags ersetzt.
Moderiert von user profile iconTino: Topic aus Sonstiges verschoben am Mo 19.07.2004 um 13:29
mstuebner
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 132

Win2000, XP
D7
BeitragVerfasst: Sa 03.07.04 21:55 
Das...
mexx hat folgendes geschrieben:

OpenDialog1.Execute;

...steht ein bischen seltsam im Raum herum. Soll der nachfolgende Code der Inhalt der Execute sein? Poste den Code doch mal vollständig.

_________________
mfg Matthias
Martin77
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 282

XP Prof
D6 Prof, D7 Personal, D7 Enterprise, D8 personal
BeitragVerfasst: So 04.07.04 09:46 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
IF FMySql.Connect then
 begin

  MessageDlg('Datenbankverbindung konnte aufgebaut werden.', mtInformation, [mbOk], 0);
  FMySQL.destroy;

Das sieht auch merkwürdig aus ,wenn du connecten konntest zerstörst du deine Instanz, wenn es fehl schlug dann nicht? Oder gibst du das dann auch frei?
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 04.07.04 10:16 
Hallo

ich hab von den cabs-zeugs keine ahnung, aber
Zitat:

Starte ich aber den Aufruf nach einer anderen Procedure ...
...
Form1.CABFile1.CABFile := 'data.cab';

sieht für mich so aus, als wenn man hier wieder mit relativen Pfadangaben arbeitet. Wenn sich das aktuelle arbeitsverzeichnis (z.B. durch den opendialog) ändert, wird dann deine cab.datei evtl nicht mehr gefunden, probier mal, hier den kompletten Dateinamen mit pfad anzugeben.

und beim opendialog fehlt das if
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  if opendialog1.execute then
    begin
      
    end

so wie du das das stehen hast, wird der code immer ausgeführt, egal, ob der user abbrechen geklickt hat oder nicht.

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
mexx Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Mo 05.07.04 16:35 
Hallo,

ich danke euch für eurer Interesse und Entschuldigung für die Unordnung im Quelltext.

Erklärung:
Es handelt sich dabei um eine Art Setup für die Installation einer Client-Server-Anwendung. Deshalb wird der Connect wieder geschlossen, weil lediglich die Richtigkeit der Daten für den connect überprüft werden. Die Procedure zum Benutzen der CAB ist eine Procedure, die durch einen Button ausgeführt wird, der erst benutzbar ist, wenn der Connect funktioniert. Die Rrocedure wird einfach aufgerufen. Rufe ich diese CAB-Procedure durch einen Button auf, den ich einfach irgendwo plaziere, funktioniert sie, sofern ich nicht die Procedure mit der Verbindung zur Datenbank aufrufe.

Fazit:
Ohne Connect-CHECK funktioniert die Install-Procedure
Mit Connect-CHECK funktioniert die Install-Procedure NICHT

FRAGE:
In welcher Weise nimmt die Procedure für die Verbindung zu der Datenbank Einfluss auf die Install-Procedure. Und zwar so, dass sie nicht funktioniert.

Vielen Dank, Gruß mexx
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mo 05.07.04 18:47 
hast du auch ausprobiert, was ich geschrieben habe?

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
mexx Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Mo 12.07.04 15:26 
Hattest mit Deiner Idee recht! Durch den Open-Dialog war eine Pfadangabe der CAB-Datei notwendig.