/*ATM(Ambil Tiru MOdifikasi)*/
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls;
type
TformName = class(TForm)
lblThunderbird: TLabel;
edThunderbird: TEdit;
sbOpenCSV: TSpeedButton;
progressBar: TProgressBar;
bbConvert: TBitBtn;
SaveDialog: TSaveDialog;
OpenDialog: TOpenDialog;
procedure bbConvertClick(Sender: TObject);
procedure sbOpenCSVClick(Sender: TObject);
private
public
procedure Convert(thunderBirdFileName, zimbraFileName: String);
end;
const
TB_FIRST_NAME = 0;
TB_LAST_NAME = 1;
TB_DISPLAY_NAME = 2;
TB_NICK_NAME = 3;
TB_EMAIL = 4;
TB_ADDITIONAL_EMAIL = 5;
TB_WORK_PHONE = 6;
TB_HOME_PHONE = 7;
TB_FAX_NUMBER = 8;
TB_PAGER = 9;
TB_MOBILE_PHONE = 10;
TB_HOME_ADDRESS_LINE_1 = 11;
TB_HOME_ADDRESS_LINE_2 = 12;
TB_HOME_CITY = 13;
TB_HOME_STATE = 14;
TB_HOME_ZIP = 15;
TB_HOME_COUNTRY = 16;
TB_WORK_ADDRESS_LINE_1 = 17;
TB_WORK_ADDRESS_LINE_2 = 18;
TB_WORK_CITY = 19;
TB_WORK_STATE = 20;
TB_WORK_ZIP = 21;
TB_WORK_COUNTRY = 22;
TB_WORK_TITLE = 23;
TB_WORK_DEPARTMENT = 24;
TB_WORK_ORGANIZATION = 25;
TB_WORK_WEBSITE = 26;
TB_HOME_WEBSITE = 27;
TB_UNKNOWN_1 = 28;
TB_UNKNOWN_2 = 29;
TB_UNKNOWN_3 = 30;
TB_CUSTOM_1 = 31;
TB_CUSTOM_2 = 32;
TB_CUSTOM_3 = 33;
TB_CUSTOM_4 = 34;
TB_NOTES = 35;
ZB_ASSISTANT_PHONE = 0;
ZB_BIRTHDAY = 1;
ZB_CALLBACK_PHONE = 2;
ZB_CAR_PHONE = 3;
ZB_WORK_ORGANIZATION = 4;
ZB_COMPANY_PHONE = 5;
ZB_DESCRIPTION = 6;
ZB_WORK_DEPARTMENT = 7;
ZB_DLIST = 8;
ZB_EMAIL = 9;
ZB_EMAIL2 = 10;
ZB_EMAIL3 = 11;
ZB_FILE_AS = 12;
ZB_FIRST_NAME = 13;
ZB_FULL_NAME = 14;
ZB_HOME_CITY = 15;
ZB_HOME_COUNTRY = 16;
ZB_HOME_FAX = 17;
ZB_HOME_PHONE = 18;
ZB_HOME_PHONE2 = 19;
ZB_HOME_ZIP = 20;
ZB_HOME_STATE = 21;
ZB_HOME_STREET = 22;
ZB_HOME_WEBSITE = 23;
ZB_INITIALS = 24;
ZB_WORK_TITLE = 25;
ZB_LAST_NAME = 26;
ZB_MIDDLE_NAME = 27;
ZB_MOBILE_PHONE = 28;
ZB_NAME_PREFIX = 29;
ZB_NAME_SUFFIX = 30;
ZB_NICK_NAME = 31;
ZB_NOTES = 32;
ZB_OFFICE = 33;
ZB_OTHER_CITY = 34;
ZB_OTHER_COUNTRY = 35;
ZB_OTHER_FAX = 36;
ZB_OTHER_PHONE = 37;
ZB_OTHER_ZIP_CODE = 38;
ZB_OTHER_STATE = 39;
ZB_OTHER_STREET = 40;
ZB_OTHER_WEBSITE = 41;
ZB_PAGER = 42;
ZB_WORK_CITY = 43;
ZB_WORK_COUNTRY = 44;
ZB_WORK_FAX = 45;
ZB_WORK_PHONE = 46;
ZB_WORK_PHONE2 = 47;
ZB_WORK_ZIP = 48;
ZB_WORK_STATE = 49;
ZB_WORK_STREET = 50;
ZB_WORK_WEBSITE = 51;
ZB_TYPE = 52;
var
formName: TformName;
implementation
uses classStringSplitter, StrUtils;
{$R *.dfm}
procedure TformName.bbConvertClick(Sender: TObject);
begin
if FileExists(edThunderbird.Text) then
begin
if SaveDialog.Execute then
begin
Convert(edThunderbird.Text, SaveDialog.FileName);
end;
end
else
MessageDlg('The file you requested is not found or cannot be read. ' +
'Please try another file.', mtError, [mbOK], 0);
end;
procedure TformName.Convert(thunderBirdFileName, zimbraFileName: String);
var
list, fields, outputList: TStringList;
i, j: integer;
destination: array[ZB_ASSISTANT_PHONE..ZB_TYPE] of String;
row: String;
begin
list := TStringList.Create;
list.LoadFromFile(thunderBirdFileName);
progressBar.Position := 0;
progressBar.Max := list.Count;
fields := TStringList.Create;
outputList := TStringList.Create;
outputList.Add('"assistantPhone","birthday","callbackPhone","carPhone",' +
'"company","companyPhone","description","department","dlist","email",'+
'"email2","email3","fileAs","firstName","fullName","homeCity",'+
'"homeCountry","homeFax","homePhone","homePhone2","homePostalCode",'+
'"homeState","homeStreet","homeURL","initials","jobTitle","lastName",'+
'"middleName","mobilePhone","namePrefix","nameSuffix","nickname","notes",'+
'"office","otherCity","otherCountry","otherFax","otherPhone",'+
'"otherPostalCode","otherState","otherStreet","otherURL","pager",'+
'"workCity","workCountry","workFax","workPhone","workPhone2",'+
'"workPostalCode","workState","workStreet","workURL","type"');
i := 0;
while i < list.Count do
begin
row := '';
TStringSplitter.split(list[i], ',', fields);
destination[ZB_ASSISTANT_PHONE] := '';
destination[ZB_BIRTHDAY] := '';
destination[ZB_CALLBACK_PHONE] := '';
destination[ZB_CAR_PHONE] := '';
destination[ZB_WORK_ORGANIZATION] := fields[TB_WORK_ORGANIZATION];
destination[ZB_COMPANY_PHONE] := '';
destination[ZB_DESCRIPTION] := '';
destination[ZB_WORK_DEPARTMENT] := fields[TB_WORK_DEPARTMENT];
destination[ZB_DLIST] := '';
destination[ZB_EMAIL] := fields[TB_EMAIL];
destination[ZB_EMAIL2] := fields[TB_ADDITIONAL_EMAIL];
destination[ZB_EMAIL3] := '';
destination[ZB_FILE_AS] := '';
destination[ZB_FIRST_NAME] := fields[TB_FIRST_NAME];
destination[ZB_FULL_NAME] := fields[TB_FIRST_NAME] + ' ' + fields[TB_LAST_NAME];
destination[ZB_HOME_CITY] := fields[TB_HOME_CITY];
destination[ZB_HOME_COUNTRY] := fields[TB_HOME_COUNTRY];
destination[ZB_HOME_FAX] := '';
destination[ZB_HOME_PHONE] := fields[TB_HOME_PHONE];
destination[ZB_HOME_PHONE2] := '';
destination[ZB_HOME_ZIP] := fields[TB_HOME_ZIP];
destination[ZB_HOME_STATE] := fields[TB_HOME_STATE];
destination[ZB_HOME_STREET] := fields[TB_HOME_ADDRESS_LINE_1] + ' ' +
fields[TB_HOME_ADDRESS_LINE_2];
destination[ZB_HOME_WEBSITE] := fields[TB_HOME_WEBSITE];
destination[ZB_INITIALS] := '';
destination[ZB_WORK_TITLE] := fields[TB_WORK_TITLE];
destination[ZB_LAST_NAME] := fields[TB_LAST_NAME];
destination[ZB_MIDDLE_NAME] := '';
destination[ZB_MOBILE_PHONE] := fields[TB_MOBILE_PHONE];
destination[ZB_NAME_PREFIX] := '';
destination[ZB_NAME_SUFFIX] := '';
destination[ZB_NICK_NAME] := fields[TB_NICK_NAME];
destination[ZB_NOTES] := fields[TB_NOTES];
destination[ZB_OFFICE] := fields[TB_WORK_ORGANIZATION];
destination[ZB_OTHER_CITY] := '';
destination[ZB_OTHER_COUNTRY] := '';
destination[ZB_OTHER_FAX] := '';
destination[ZB_OTHER_PHONE] := '';
destination[ZB_OTHER_ZIP_CODE] := '';
destination[ZB_OTHER_STATE] := '';
destination[ZB_OTHER_STREET] := '';
destination[ZB_OTHER_WEBSITE] := '';
destination[ZB_PAGER] := fields[TB_PAGER];
destination[ZB_WORK_CITY] := fields[TB_WORK_CITY];
destination[ZB_WORK_COUNTRY] := fields[TB_WORK_COUNTRY];
destination[ZB_WORK_FAX] := fields[TB_FAX_NUMBER];
destination[ZB_WORK_PHONE] := fields[TB_WORK_PHONE];
destination[ZB_WORK_PHONE2] := '';
destination[ZB_WORK_ZIP] := fields[TB_WORK_ZIP];
destination[ZB_WORK_STATE] := fields[TB_WORK_STATE];
destination[ZB_WORK_STREET] := fields[TB_WORK_ADDRESS_LINE_1] + ' ' +
fields[TB_WORK_ADDRESS_LINE_1];
destination[ZB_WORK_WEBSITE] := fields[TB_WORK_WEBSITE];
destination[ZB_TYPE] := '';
for j := ZB_ASSISTANT_PHONE to ZB_TYPE do
begin
row := row + '"' + destination[j] + '"';
if j <> ZB_TYPE then
row := row + ',';
end;
outputList.Add(row);
progressBar.StepBy(1);
Inc(i);
end;
outputList.SaveToFile(zimbraFileName);
outputList.Free;
fields.Free;
list.Free;
end;
procedure TformName.sbOpenCSVClick(Sender: TObject);
begin
if OpenDialog.Execute then
begin
edThunderbird.Text := OpenDialog.FileName;
end;
end;
end.
Like this:
Be the first to like this post.
~ oleh chupklon pada November 20, 2008.
Ditulis dalam SInaUuu...