Różne problemy na które trafiłem
Java i DLL Delphi
No i kolejny problem ... jest potrzebna biblioteka do zipowania plików w javie.
Niby
nie ma problemu bo przecież jest wszystko w JDK ale ... co z zipowaniem
z hasłem. Niestety taka funkcjonalność nie została zaimplementowana.
Hmmm ... mam akurat pod ręką biblioteki z takimi możliwościami do Delphi, zatem do dzieła :) .
Przeszukujemy internet bo oczywiście standardowy export i wywołanie nie działa :/
Piszę DLL w Delphi
- Plik dpr
uses
JNI,
ArchZipUnit in 'ArchZipUnit.pas';
{$R *.res}
function Java_eu_salik_utils_ArchZip_ZipFileWithPass(PEnv: PJNIEnv; Obj: JObject; FilePath : JString; Password : JString ) : JBoolean; stdcall;
var FPath, Pass : String;
Env : TJNIEnv;
begin
Env := TJNIEnv.Create(PEnv);
FPath := Env.JStringToString( FilePath );
Pass := Env.JStringToString( Password );
Env.Free;
Result := ArchZipUnit.ZipFileWithPass( FPath, Pass );
end;
exports
Java_eu_salik_utils_ArchZip_ZipFileWithPass;
end.
- Plik pas
interface
uses
SysUtils, Classes,ClassUtils,JNI, VclZip;
// pakowanie jednego pliku z zadanym hasłem - plik powstaje w tej samej lokalicacji
function ZipFileWithPass( FileNamePath , PasswordStr : String ) : boolean; forward;
implementation
function ZipFileWithPass( FileNamePath , PasswordStr : String ) : boolean;
var Zip : TVclZip;
fileext : string;
filenew : string;
begin
result := true;
try
Zip := TVclZip.Create(nil);
with Zip do
begin
Recurse := false;
StorePaths := false;
RelativePaths := false;
PackLevel := 0;
filenew := FileNamePath;
fileext := ExtractFileExt(filenew);
filenew := ReplaceStr( filenew, fileext, '.zip' );
ZipName := filenew;
Password := PasswordStr;
FilesList.Add( FileNamePath );
Zip;
Free;
end;
except
result := False;
end;
end;
- A teraz JAVA
package eu.salik.utils;
public class ArchZip {
native public boolean ZipFileWithPass(String filename, String pass);
static {
System.loadLibrary("eArchZip");
}
}
public class ArchZip {
native public boolean ZipFileWithPass(String filename, String pass);
static {
System.loadLibrary("eArchZip");
}
}
- Przykładowe wywołanie
public static void main(String[] args) {
ArchZip zzz = new ArchZip();
boolean ttt = zzz.ZipFileWithPass("c:\\temp\\1.txt", "111");
System.out.println( String.valueOf(ttt) );
}
I wszystko działa - mam nadzieję że wam również się uda :)
Backup MYSQL
Wymaga wywołania tylko jednej komendy z linii poleceń :D . Oczywiście mowa o MySQL 'postawionym' na własnej maszynie. Nie wymaga żadnych wizualnych narzędzi administracyjnych.
>>> czyli baza danych TEST do pliku 'test.sql' <<<
Tak zrzucony plik wystarczy za pomocą narzędzia (np phpAdmin) pobrać jako backup bazy danych na serwerze gdzie mamy XOOPS'a ;)
Java Daty i Stringi
/**
* Formatowanie daty do stringa wg ustalonego formatu po przekazaniu
* wartości daty jako string
*
* @param pYear
* @param pMonth
* @param pDay
* @return
*/
public static String FormatDate(String pYear, String pMonth, String pDay, String pFormat) {
Date tmpDate = FormatDate(Integer.valueOf(pYear).intValue(), Integer.valueOf(pMonth).intValue(), Integer.valueOf(pDay).intValue());
return FormatDate(tmpDate, pFormat);
}
/**
* Formatowanie liczb do stringa wg daty
*
* @param pYear
* @param pMonth
* @param pDay
* @return
*/
public static Date FormatDate(int pYear, int pMonth, int pDay) {
String tmpStr = String.valueOf(pYear) + "." + String.valueOf(pMonth) + "." + String.valueOf(pDay);
return FormatDate(tmpStr, "yyyy.MM.dd");
}
/**
* Formatowanie daty do stringa
*
* @param pDate
* @return
*/
public static String FormatDate(Date pDate, String pFormat) {
SimpleDateFormat dataFormat = new SimpleDateFormat();
dataFormat.applyPattern(pFormat);
String tmpStr = dataFormat.format(pDate);
dataFormat = null;
return tmpStr;
}
/**
* Formatowanie stringa do daty
*
* @param pDate
* @param pPattern
* @return
*/
public static Date FormatDate(String pDate, String pPattern) {
SimpleDateFormat dataFormat = new SimpleDateFormat();
if (!pPattern.equals(""))
dataFormat.applyPattern(pPattern);
Date tmpDate = new Date();
try {
tmpDate = dataFormat.parse(pDate);
} catch (ParseException e) {
}
dataFormat = null;
return tmpDate;
}
- Przechodzimy do katalogu :
- Wywołujemy polecenie
>>> czyli baza danych TEST do pliku 'test.sql' <<<
Tak zrzucony plik wystarczy za pomocą narzędzia (np phpAdmin) pobrać jako backup bazy danych na serwerze gdzie mamy XOOPS'a ;)
Java Daty i Stringi
/**
* Formatowanie daty do stringa wg ustalonego formatu po przekazaniu
* wartości daty jako string
*
* @param pYear
* @param pMonth
* @param pDay
* @return
*/
public static String FormatDate(String pYear, String pMonth, String pDay, String pFormat) {
Date tmpDate = FormatDate(Integer.valueOf(pYear).intValue(), Integer.valueOf(pMonth).intValue(), Integer.valueOf(pDay).intValue());
return FormatDate(tmpDate, pFormat);
}
/**
* Formatowanie liczb do stringa wg daty
*
* @param pYear
* @param pMonth
* @param pDay
* @return
*/
public static Date FormatDate(int pYear, int pMonth, int pDay) {
String tmpStr = String.valueOf(pYear) + "." + String.valueOf(pMonth) + "." + String.valueOf(pDay);
return FormatDate(tmpStr, "yyyy.MM.dd");
}
/**
* Formatowanie daty do stringa
*
* @param pDate
* @return
*/
public static String FormatDate(Date pDate, String pFormat) {
SimpleDateFormat dataFormat = new SimpleDateFormat();
dataFormat.applyPattern(pFormat);
String tmpStr = dataFormat.format(pDate);
dataFormat = null;
return tmpStr;
}
/**
* Formatowanie stringa do daty
*
* @param pDate
* @param pPattern
* @return
*/
public static Date FormatDate(String pDate, String pPattern) {
SimpleDateFormat dataFormat = new SimpleDateFormat();
if (!pPattern.equals(""))
dataFormat.applyPattern(pPattern);
Date tmpDate = new Date();
try {
tmpDate = dataFormat.parse(pDate);
} catch (ParseException e) {
}
dataFormat = null;
return tmpDate;
}
Brak komentarzy:
Prześlij komentarz