Текущий архив: 2002.03.28;
Скачать: CL | DM;
ВнизКак в StringGrid забросить данные из *.txt файла ? Найти похожие ветки
← →
IronHawk (2002-03-15 22:46) [0]Пиветствую Мастеров !
Как правильно и без багов сбросить из *.тхт файла данные в StringGrid учитывая разделитель "|"
между столбцами !
примерное содержание *.тхт файла:
123|мама|один
.....
456|папа|двадцать
......
789|я|последний
.... заранее благодарен !
← →
lipskiy (2002-03-15 23:27) [1]А в чем проблема?
Читаешь строку из файла, пробегаешь циклом по ней, по признаку разделителя получаешь текст ячейки, кидаешь в грид.
← →
MBo (2002-03-16 07:43) [2]проще всего так
sl:TStringList;
i:integer;
begin
sl:=TStringList.Create;
sl.LoadFromFile("e:\qq.txt");
//SG.RowCount:=sl.Count
//ColCount должен быть правильным, если есть сомнения, на каждом шаге можно проверять
for i:=0 to sl.Count-1 do
SG.Rows[i].CommaText:=StringReplace(sl[i], "|" , "," ,[rfReplaceAll]);
Если читаешь файл другим способом, этот прием все равно можно применить для строк.
← →
lipskiy (2002-03-16 11:21) [3]А если полезный текст содержит запятые?
← →
MBo (2002-03-16 11:44) [4]тогда ой. расчет на приведенный формат
в таком случае надокак ты сказал или можно извратно
if Pos(",",sl[i])>0 then begin
S:=StringReplace(sl[i], "," , "`" ,[rfReplaceAll]);
SG.Rows[i].CommaText:=StringReplace(s, "|" , "," ,[rfReplaceAll]);
SG.Rows[i].Text:=StringReplace(SG.Rows[i].Text, "`" , "," ,[rfReplaceAll]);
end;
← →
lipskiy (2002-03-16 11:53) [5]2 MBo
Ну уж точно изврат! :)
А если в полезном тексте есть "`" :)))
Шутка.
Но вообще, для приведенного формата CommaText конечно проще.
← →
Song (2002-03-16 12:50) [6]Не знаю, я б такой вариант предложил бы:
AssignFile(ff,"text.dat");
Reset(ff);
r:=1;
With StringGrid1 Do
Begin
While not Eof(ff) Do
Begin
ReadLn(ff,S);
With TStringList.Create Do
try
Text:=S;
Text:=StringReplace(Text,"|",#13#10,[rfReplaceAll]);
Rows[r]:=Text;
finally
Free;
end;
Inc(r);
End;
RowCount:=r;
End;
CloseFile(ff);
← →
IronHawk (2002-03-16 13:05) [7]Всем огромное спасибо
Особые благодарности :
MBo ©
Song ©
Спасибо !
← →
olookin (2002-03-16 13:57) [8]А по моему гораздо проще добавить символ "|" в конце строки, т.е. не
папа|мама|бабушка
а
папа|мама|бабушка|
Тогда все решительно проще (как я и делаю с текстовыми файлами)
← →
Oleg_K (2002-03-16 15:19) [9]А как быть если в столбце нужно записать несколько слов? Метод, предложенный МВо, после пробела пропусакет символы.
Наприемр нужно:
11111|здесь несколко слов|sdsdsd
222|здесь тоже| wewwe
Второй столбец StrihgGrid"а должен содержать не только слов "здесь", а все словосочетание.
← →
olookin (2002-03-16 15:40) [10]Поиском по "|" все у меня читается и с пробелами. Причем в while.
← →
olookin (2002-03-16 15:42) [11]Например:
while a<>"" do begin s:=Copy(a,1,Pos("|",a)-1);
SetLength(IniFile.EqapFile,i+1); IniFile.EqapFile[i]:=s;
Delete(a,1,Pos("|",a)); i:=i+1; end;
У меня все работает.
← →
IronHawk (2002-03-16 22:27) [12]
> olookin ©
Спасибо !
А каким образом подхватывать из файла количество строк и присваивать это количество StrihgGrid-у ???
← →
MBo (2002-03-17 06:54) [13]7 строчка 16.03.02 07:43
этим и удобен TSTringList
← →
IronHawk (2002-03-17 17:24) [14]
> olookin © (16.03.02 15:42)
А зачем мне через IniFile работать мне без него надо !
Как так сотворить и с пробелами ???
← →
olookin (2002-03-17 18:20) [15]Это не более чем пример. Вместо IniFile используйте просто массив типа String.
Что касается пробелов, то действуйте также (само собой разумеется, что полезные символы не содержат пробела). Например:
"папа мама бабушка "
ищите в этой строке симвло " " и все будет в порядке.
← →
IronHawk (2002-03-17 21:53) [16]
> olookin © (16.03.02 15:42)
> Например:
>
> while a<>"" do begin s:=Copy(a,1,Pos("|",a)-1);
> SetLength(IniFile.EqapFile,i+1); IniFile.EqapFile[i]:=s;
> Delete(a,1,Pos("|",a)); i:=i+1; end;
>
> У меня все работает.
Извините !
А версия Delphi у Вас какая ???
← →
IronHawk (2002-03-18 11:33) [17]to ALL Oleg_K прав !
Пробелы мешают !
Как лечить ???
← →
MBo (2002-03-18 12:48) [18]по идее Song-а
за ColCount сам следи
procedure TForm1.Button1Click(Sender: TObject);
var sl:TStringList;
i:integer;
begin
sl:=TStringList.Create;
sl.LoadFromFile("e:\aa.txt");
With StringGrid1 Do Begin
RowCount:=sl.Count;
for i:=0 to sl.Count-1 do begin
sl[i]:=StringReplace(sl[i],"|",#13#10,[rfReplaceAll]);
Rows[i].Text:=sl[i];
end;
end;
sl.Free;
end;
← →
IronHawk (2002-03-18 14:07) [19]
> MBo © (18.03.02 12:48)
Спасибо !
Всё работает !
БЛАГОДАРЮ ВАС, УВАЖАЕМЫЙ !
Всех благ !
Страницы: 1 вся ветка
Текущий архив: 2002.03.28;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.006 c