Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Sicherung mit Myqsldump (https://www.delphipraxis.net/87837-sicherung-mit-myqsldump.html)

sebastian_buege 6. Mär 2007 08:35


Sicherung mit Myqsldump
 
GUten Morgen, ich habe mal wieder ein Problem:

Ich habe eine Anwendung wo eine Mysql datenbank im hintergrund läuft. ich möchte nun aus dem program heraus mit hilfe des Tool smysqldump eine Sicherung der Datenbank machen.

Delphi-Quellcode:
ShellExecute(handle,'open','..\Mysql\mysqldump','--databases pze -u root -p > siko_333.sql','',SW_SHOW);
Das Programm wird auch gestartet. Es verlangt auch nach dem password. soweit uist alles richtig aber er leitet die ausgabe nicht in die datei um sondern auf den bildschirm.

wo könnte der fehler sein.

Vielen dank

marabu 6. Mär 2007 08:45

Re: Sicherung mit Myqsldump
 
Hallo Sebastian,

die Behandlung von pipes und redirection ist eine Funktionalität der Shell. Darum musst du beim Aufruf entweder die Shell aufrufen oder alles in einen Befehlsstapel verpacken.

Freundliche Grüße

sebastian_buege 6. Mär 2007 08:48

Re: Sicherung mit Myqsldump
 
Zitat:

Zitat von marabu
Darum musst du beim Aufruf entweder die Shell aufrufen oder alles in einen Befehlsstapel verpacken.

Danke für die schnelle Antwort. das Problem wenn ich die schell (cmd) aufrufe, weiß ich nicht wie ich dort mit den Parametern umgehen muss. Was genau meinst du mit einem Befehlsstapel

marabu 6. Mär 2007 09:01

Re: Sicherung mit Myqsldump
 
Dein Befehl und seine Parameter und Schalter bilden dann einen einzigen string - die commandline:

Delphi-Quellcode:
var
  cmd, shell: string;
begin
  shell := GetEnvironmentVariable('COMSPEC');
  cmd := '/C ..\Mysql\mysqldump.exe --databases pze -u root -p > siko_333.sql';
  ShellExecute(0, '', PAnsiChar(shell), PAnsiChar(cmd), '', SW_SHOW);
end;
Getippt und nicht getestet.

Ein Befehlsstapel ist einfach eine CMD-Datei.

Freundliche Grüße

sebastian_buege 6. Mär 2007 09:08

Re: Sicherung mit Myqsldump
 
Zitat:

Zitat von marabu
shell := GetEnvironmentVariable('COMSPEC');

Was soll dieser Befehl bewirken ?

marabu 6. Mär 2007 09:17

Re: Sicherung mit Myqsldump
 
So besorgst du dir den vollen Namen der Shell - oder wie willst du das machen?

sebastian_buege 6. Mär 2007 09:20

Re: Sicherung mit Myqsldump
 
Zitat:

Zitat von marabu
So besorgst du dir den vollen Namen der Shell - oder wie willst du das machen?

Okay ich setzte mein Program aber nur in Windows systemmen ab 2000 bzw. xp ein. kann ich nicht einfach sagen

Delphi-Quellcode:
shell:='cmd';

marabu 6. Mär 2007 09:27

Re: Sicherung mit Myqsldump
 
Wie du magst.

Die relativen Pfade in deiner Kommandozeile solltest du aber noch auf absolute Pfade umstellen und den Namen der Ausgabedatei parametrisieren.

Freundliche Grüße

sebastian_buege 6. Mär 2007 09:39

Re: Sicherung mit Myqsldump
 
Okay ich schicke dir jetzt mal meinen Quellcode.

Delphi-Quellcode:
var
   cmd:String;
   shell: array [Byte] of Char;
   size: Dword;
begin
     GetEnvironmentVariable('COMSPEC',shell,size);
     cmd := '..\Mysql\mysqldump.exe --databases pze -u root -p > siko_333.sql';
     ShellExecute(0, 'open', shell, PAnsiChar(cmd), '', SW_SHOW);
Also das auslesen der cmd variablen geht . er öffnet auch das kommand fenster - aber nichts weiter .

was kann ich noch tun

Luckie 6. Mär 2007 09:48

Re: Sicherung mit Myqsldump
 
Nun, er wird die mysqldump.exe nicht finden. Aber das hat marabu doch schon gesagt:
Zitat:

Die relativen Pfade in deiner Kommandozeile solltest du aber noch auf absolute Pfade umstellen


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

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