| 
| 
 | Вопрос # 2 329/ вопрос открыт / | 
 |  Здравствуйте!Подскажите пожайлуста как из текстового файла вывести данные в компонент StringRid в 3 столбца, если данные в файл записаны в столбик?
 
|  |   Вопрос задала: Mania (статус: Посетитель)Вопрос отправлен: 21 января 2009, 14:30
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Ученый Здравствуйте, Mania! Можно еще попробывать вот так:
 
 procedure TForm1.Button1Click(Sender: TObject);
var sl:TStringList;
begin
sl:=TStringList.create;
sl.LoadFromFile('Имя Файла');
 
StringGrid1.cells[1,1]:=Sl[0];// выведет первую строку из текстового файла
StringGrid1.cells[1,2]:=Sl[1]; // выведет Вторую строку из текстового файла
StringGrid1.cells[1,3]:=Sl[2]; // выведет третью строку из текстового файла
 sl.free;
end;
 
end.
|  | Ответ отправил: Ученый (статус: 8-ой класс)Время отправки: 21 января 2009, 16:08
 
 |  
 Мини-форум вопросаВсего сообщений: 7; последнее сообщение — 21 января 2009, 15:26; участников в обсуждении: 2. 
|   | Вадим К (статус: Академик), 21 января 2009, 14:36 [#1]:А в строку умеете? а в 4 столбца? в чем проблема собственно, как данные в текстовом файле представлены. Вы не знаете. как с StringGrid работать, или не можете с файла вычитать и разпарсить? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Mania (статус: Посетитель), 21 января 2009, 14:40 [#2]:задание такое: В текстовом файле содержатся сведения о радиодеталях, необходимых для изготовления устройства: название, номинал, количество. Создать анкетную форму для заполнения файла. Названия деталей выбирать из списка (компонент ComboBox вкладки Standart). Вывести на экран  сведения в виде таблицы, сгруппировать по названию деталей |  
|   | Вадим К (статус: Академик), 21 января 2009, 14:45 [#3]:ну это всё прекрасно. Но решать за Вас задачу врядли будут. Содержаться данные.... а как они там содержаться, вот в чем вопрос. Если не задано - значит наверное Вам нужно самостоятельно придумать. а потом задавать вопросы.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Mania (статус: Посетитель), 21 января 2009, 14:49 [#4]:Если я вам вышлю код программы, в которой осталось сделать только вывод в StringRid вы мне сможете помочь? |  
|   | Mania (статус: Посетитель), 21 января 2009, 15:01 [#5]:unit Unit1; 
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons, Grids;
 
 type
 TForm1 = class(TForm)
 Edit1: TEdit;
 Edit2: TEdit;
 ComboBox1: TComboBox;
 Button1: TButton;
 Button2: TButton;
 StringGrid1: TStringGrid;
 BitBtn1: TBitBtn;
 Memo1: TMemo;
 Label1: TLabel;
 Label2: TLabel;
 Label3: TLabel;
 procedure Button1Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 procedure BitBtn1Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 
 var
 Form1: TForm1;
 
 implementation
 
 {$R *.dfm}
 
 procedure TForm1.Button1Click(Sender: TObject);
 var f:TextFile;
 begin
 If (length(Edit1.Text)=0)
 or (length(Edit2.Text)=0)
 or (Combobox1.Text='')
 then
 ShowMessage ('Ошибка ввода данных.'+#13'Все поля должны быть заполнены.')
 else
 begin
 try
 AssignFile(f,'produc.txt');
 {$I-}
 Append(f);
 writeln(f, edit1.text);
 writeln(f,edit2.text);
 writeln(f,Combobox1.Text);
 closeFile(f);
 except
 on EInOutError do ShowMessage('Невозможно записать в файл');
 end;
 end;
 end;
 
 
 procedure TForm1.Button2Click(Sender: TObject);
 var f:textfile;
 begin
 AssignFile(f,'produc.txt');
 {$I-}
 Append(f);
 If IOResult=0
 then Button2.Enabled:=true
 else
 begin
 rewrite(f);
 If IOResult<>0
 then Button1.Enabled:=true
 else
 ShowMessage('Ошибка создания файла Produc.txt');
 end;
 closeFile(f);
 end;
 
 
 procedure TForm1.BitBtn1Click(Sender: TObject);
 var
 f:textfile;
 i,j:integer;
 s:string;
 
 begin
 Stringgrid1.Cells[0,0]:='Наименование детали';
 Stringgrid1.Cells[1,0]:='Номинал';
 Stringgrid1.Cells[2,0]:='Количество';
 
 
 AssignFile(f,'produc.txt');
 reset(f);
 While Not EOF(f) do
 begin
 readln(f,s);
 form1.Memo1.Lines.Add(s);  //Выводит содержимое текстового файла в мемо а надо в StringGrid1
 end;
 
 end;
 end.
 |  
|   | Вадим К (статус: Академик), 21 января 2009, 15:15 [#6]:Ну до каких пор, до каких люди будут делать так как они хотят, а не то, что их просят. Я же русским языком написал "нужен формат файл", могу украинским, английским. Почему я должен всматриваться в код и искать там среди безликих ButtonXClick нужный обработчик?
 
 AssignFile(f,'produc.txt');
reset(f);
While Not EOF(f) do
begin
readln(f,s);
form1.Memo1.Lines.Add(s); //Выводит содержимое текстового файла в мемо а надо в StringGrid1
end;А длинее можно было написать? почему просто не написать Memo1.Lines.loadFromFile('produc.txt'); Результат тот же.
 а использование {$I-} и исключений в перемешку чего только стоит... за такое надо ставить незачет в зачетку и выгонять. Сразу.
 Добавить в грид? ну не ужели так сложно написать что то вида
 
 i := 0;
AssignFile(f,'produc.txt');
reset(f);
While Not EOF(f) do
begin
readln(f,s);
StringGrid1.cells[i mod 3, (i div 3) + 1] := s;
i :=i+1;
end;
CloseFile(f);И самое главное, файлы закрывать за собой надо! Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Mania (статус: Посетитель), 21 января 2009, 15:26 [#7]:Спасибо Вам большое! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |