Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];

Вниз

Как в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
4-91128
dr0Ne64
2002-01-24 14:05
2002.03.28
Форматирование дискеты


1-90860
lipskiy
2002-03-16 22:27
2002.03.28
Как по-простому взять текущее время в формате чч.мм.сс ?


14-91057
Prog_SKV@Mail.ru
2002-02-13 08:16
2002.03.28
Помогите !!!


1-90969
SecondGray
2002-03-15 05:53
2002.03.28
Delphi 5&Win98 против Delphi5&Win2K


1-90854
SlavaS
2002-03-16 21:35
2002.03.28
Неудаётся найти файл *.bpl





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский