Ajuda com o StringGrid.LoadFromCSV...
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.
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
Curtidas 0
Respostas
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
01/10/2015
Obrigado Rafael, vou testar...
GOSTEI 0
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.
[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
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 :
Lembrando que apenas estou copiando o seu comando, só adiciona um ) aí depois do dados.csv, provavelmente vai dar certo....
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
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.
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