Ajuda com o StringGrid.LoadFromCSV...

Delphi

01/10/2015

Olá pessoal, estou precisando de uma ajuda com o comando nativo do Delphi XE2 StringGrid.LoadFromCSV...

O problema é o seguinte:

Quando salvo os dados como: StringGrid.SaveToCSV('C:\dados\dados.csv',';',' '); não ocorre erro algum ao carregá-lo utilizando o comando StringGrid.LoadFromCSV...
porém quando o endereço do diretório é : C:\meus dados\dados.csv ou seja, possui um espaço entre os nomes do diretório, o comando StringGrid.LoadFromCSV... falha e carrega as informações de foma incorreta. Alguém tem alguma dica para solucionar esse pequeno problema?

Obrigado.
Adriano.
Adriano Crivelli

Adriano Crivelli

Curtidas 0

Respostas

Rafael Bosco

Rafael Bosco

01/10/2015

Utiliza uma função nativa do Delphi, StringReplace:

   function ArrumaCaminho(const Caminho: String): String;
   begin
      Result := StringReplace(Caminho, ' ', '', [rfReplaceAll]);
   end;



  StringGrid.LoadFromCSV(ArrumaCaminho(C:\meus dados\dados.csv',';',' ');
GOSTEI 0
Adriano Crivelli

Adriano Crivelli

01/10/2015

Obrigado Rafael, vou testar...
GOSTEI 0
Adriano Crivelli

Adriano Crivelli

01/10/2015

Rafael, sua dica deu o segunte erro:
[dcc32 Error] ...E2034 Too many actual parameters

Eu utilizei assim:
StringGrid.LoadFromCSV(ArrumaCaminho(edtLocalData.text+'data.csv',';',' '));

...mas obrigado assim mesmo.
GOSTEI 0
Rafael Bosco

Rafael Bosco

01/10/2015

Brother, eu só copiei o seu comando do LoadFromCSV, não sei se ele está correto, pois eu não testei aqui, mas essa mensagem ta dizendo que tem mais parâmetros na função do que o necessário, altere para :

   StringGrid.LoadFromCSV(ArrumaCaminho(edtLocalData.text+'data.csv')',';',');


Lembrando que apenas estou copiando o seu comando, só adiciona um ) aí depois do dados.csv, provavelmente vai dar certo....
GOSTEI 0
Adriano Crivelli

Adriano Crivelli

01/10/2015

Rafael, resolvi o problema utilizando a seguinte procedure...

procedure LoadCSVFile(FileName: string; JvStringGrid1: TStringGrid);
var
temp, fId, fFile, fDate: string;
sgItem: TStringList;
f: textfile;
begin
assignfile(f, FileName);
reset(f);
sgItem := TStringList.Create;
JvStringGrid1.RowCount := 2;
while not eof(f) do
begin
readln(f, temp);
fId := copy(temp, 1, pos(';', temp) - 1);
delete(temp, 1, pos(';', temp));
fFile := copy(temp, 1, pos(';', temp) - 1);
delete(temp, 1, pos(';', temp));
fDate := temp;
sgItem.Clear;
sgItem.Add(fID);
sgItem.Add(fFile);
sgItem.Add(fDate);
JvStringGrid1.Rows[JvStringGrid1.RowCount - 1].AddStrings(sgItem);
JvStringGrid1.RowCount := JvStringGrid1.RowCount + 1;
end;
sgItem.Free;
closefile(f);
end;

Modo de usar:

LoadCSVFile(edtLocalData.text+'data.csv', JvStringGrid1);

Tive de fazer alguns ajustes pois o comando que salva os dados no arquivo 'data.csv'...JvStringGrid1.SaveToCSV...grava informações adicionais que precisaram ser removidas ao carregar os dados, mas funcionou perfeitamente.
Caso sirva de ajuda para alguém...
Obrigado pela sua colaboração. Valeu a intenção.
GOSTEI 0
POSTAR