Autor |
Beitrag |
mexx
      
Beiträge: 1183
|
Verfasst: 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.
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 := TiniFile.Create(OpenDialog1.FileName); 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;
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 Motzi: Code- durch Delphi-Tags ersetzt.Moderiert von Tino: Topic aus Sonstiges verschoben am Mo 19.07.2004 um 13:29
|
|
mstuebner
      
Beiträge: 132
Win2000, XP
D7
|
Verfasst: 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
      
Beiträge: 282
XP Prof
D6 Prof, D7 Personal, D7 Enterprise, D8 personal
|
Verfasst: So 04.07.04 09:46
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
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: 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
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 
      
Beiträge: 1183
|
Verfasst: 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
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: 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 
      
Beiträge: 1183
|
Verfasst: Mo 12.07.04 15:26
Hattest mit Deiner Idee recht! Durch den Open-Dialog war eine Pfadangabe der CAB-Datei notwendig.
|
|
|