Recentemente comecei a estudar os códigos do projeto ACBR, mas precisei alterar uma série de coisas para que funcionasse em linux, dentre elas:
1) alteração do padrão do arquivo para UTF8, por exemplo, a função tiraacentos:
function TiraAcentos( const AString : String ) : String ;
const
SearchFor='ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ';
Change_To ='AAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy';
var
subtext:string;
s1:integer;
LengLoop,LengTxt,posx:longint;
begin
result:='';
LengTXT:=Length(AString);
LengLoop:=1;
while LengLoop<=LengTxt do begin
case AString[LengLoop] of
#000..#191: s1:=1;
#192..#223: s1:=2;
#224..#239: s1:=3;
#240..#247: s1:=4;
#248..#251: s1:=5;
#252..#254: s1:=6;
#255 : s1:=7;
end;
if s1=1 then
result:=result+AString[LengLoop]
else begin
subtext:=copy(AString,LengLoop,s1);
posx:=UTF8Pos(subtext,SearchFor);
if posx>0 then result:=result+Change_To[posx]
else if subtext='ß' then result:=result+'ss'
else if subtext='æ' then result:=result+'ae'
else if subtext='Æ' then result:=result+'AE'
end;
LengLoop:=LengLoop+s1;
end
end;
2) Salvar os arquivos em formato UTF8:
Sim, os arquivos fontes estão gravados no formato ISO8859-15: formato obsoleto anterior ao unicode.
3) Acrescentar alguns arquivos aos pacotes, e colocar diretivas de compilação nos arquivos:
Pacotes como ACBrDFeComum, precisam do arquivo para ACBrDFeWinCrypt.pas, mas esse não está na incluído no pacote, apenas no caminho de pesquisa.
Quando se instala esse pacote no Lazarus para linux, ele não é incluído, por conta da diretiva de compilação {$IfDef MSWINDOWS}, mas na compilação cruzada, ele é necessário, e não consegue ser localizado. Solução, incluir o arquivo no pacote e colocar as diretivas de compilação no arquivo ACBrDFeWinCrypt.pas,
Posto o acima, pergunto:
1) A Comunidade ACBr tem interesse em manter a compatibilidade com lazarus para linux, ou será necessário criar um fork?
2) Em caso de fazer um FORK funcional para Linux com compilação cruzada para FreeBSD, Windows e Solaris, como faço para obter os registros de alterações/inclusões com o intúito de manter um mínimo de compatibilidade com os componentes ACBr?
3) Em caso de interesse em criar compatibilidade com o linux e o crosscompile, quem será o contato para que se envie as alterações?
4) Não uso Delphi, e vejo que há muito interesse em manter a compatibilidade com o D7, apesar dele não suportar Unicode. Há muito que já se havia anunciado o término de suporte do ACBr ao D7, mas isso ainda não ocorreu. Em caso de não ser criado um fork para compatibilidade Linux, será necessário criar um fork para manter a compatibilidade com o D7?