Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2011, 12:52   #1
mafuea
 
Регистрация: 09.12.2011
Сообщений: 4
Восклицание Запись из файла txt в StringGrid

Заранее прошу прощение за повтор темы.

У меня есть текстовый файл с таблично заданной функцией. Мне нужно значения этой функции забить в StringGrid. Первая колонка-это значения аргумента, вторая-значения самой функции. Мучалась долго, никак не получается.
Помогите плиз...
mafuea вне форума Ответить с цитированием
Старый 09.12.2011, 13:23   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

как в текстовике хранятся данные? Пример можно?
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 09.12.2011, 13:26   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вообще не вижу никаких сложностей!
Цитата:
Мучалась долго, никак не получается.
ну так покажите Ваш код!

Где именно и как у Вас задана таблица значений функции?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.12.2011, 13:52   #4
mafuea
 
Регистрация: 09.12.2011
Сообщений: 4
По умолчанию

например вот так:
x y
0.5 0,3
1 2
1.5 0
2 1.3
2.5 0.6
3 3.6
mafuea вне форума Ответить с цитированием
Старый 09.12.2011, 13:53   #5
mafuea
 
Регистрация: 09.12.2011
Сообщений: 4
По умолчанию

разделитель между числами - пробел
mafuea вне форума Ответить с цитированием
Старый 09.12.2011, 13:56   #6
mafuea
 
Регистрация: 09.12.2011
Сообщений: 4
По умолчанию

Мой код выглядит так. Он не работает и написана полная чушь... поэтому я попросила помощи... тк я чайник))

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
      OpenDialog1.filter:= 'Текст|*.txt';
end;


procedure TForm1.Button1Click(Sender: TObject);
var f: TextFile;
    fName: String[80];
    buf: String[80];
begin
 if not OpenDialog1.Execute
  then exit;

  fName:= OpenDialog1.FileName;
  Form1.Caption:= fName;
  AssignFile(f, fName);

  try
     Reset(f);
  except
      on EInOutError do
     begin
      ShowMessage('Ошибка доступа к файлу '+ fName);
      exit;
      end;
end;
    while NOT EOF(f) do begin
    readln(f,buf);
     stringGrid1.Cells[0,i]:=buf(i);
     stringGrid1.Cells[j,0]:=buf(j);
     i:=i+1;
     j:=j+1;
    end;
   closefile(f);

   end;


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 09.12.2011 в 15:21.
mafuea вне форума Ответить с цитированием
Старый 09.12.2011, 15:41   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте на нажатие кнопки такой код:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  TS : TStringList;
  s : string;
  x, y : extended;
  i, j, CountRow, k : integer;
begin
  if not OpenDialog1.Execute
    then exit;

  Form1.Caption := OpenDialog1.FileName;

  TS := TStringList.Create;
  try
    TS.LoadFromFile( OpenDialog1.FileName );
  except
     FreeAndNil( TS );
     ShowMessage('Ошибка доступа/чтения файла ' + OpenDialog1.FileName);
     exit;
  end;

  StringGrid1.FixedRows := 0;
  StringGrid1.FixedCols := 0;
  StringGrid1.ColCount := 2;
  StringGrid1.RowCount := TS.Count;

  CountRow := 0;
  for i:=0 to TS.Count - 1 do begin
     s := Trim(TS.Strings[i]);
     if Pos(' ', s ) > 0 then begin
        s := StringReplace( s, '.',  DecimalSeparator,  [rfReplaceAll] );
        s := StringReplace( s, ',',  DecimalSeparator,  [rfReplaceAll] );
        Val(Trim(Copy(s, 1, Pos(' ', s )-1)), x, k);
        if k<>0 then {в начале строки идёт НЕ ЧИСЛО - игнорируем всю строчку} Continue;
        Val(Trim(Copy(s, Pos(' ', s )+1, 255)), y, k);
        if k<>0 then {в начале строки идёт НЕ ЧИСЛО - игнорируем всю строчку} Continue;

        {всё хорошо. найденные значения записываем в StringGrid}
        Inc(CountRow); {увеличиваем счётчик строк}
        StringGrid1.Cells[0, CountRow-1] := FloatToStr( x );
        StringGrid1.Cells[1, CountRow-1] := FloatToStr( y );
     end;
  end;

  // подкорректируем размер грида - число строк сделаем равным счётчику
  StringGrid1.RowCount := CountRow;

  FreeAndNil( TS ); {очистим список}

end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись из файла txt в массив aleks_m Общие вопросы Delphi 5 06.05.2011 15:04
Как скопировать текст с файла 1.txt и записать в 2.txt Kasper1 Общие вопросы по Java, Java SE, Kotlin 1 14.12.2010 05:56
Из StringGrid В txt Roger_07 Общие вопросы Delphi 2 07.01.2009 02:57
Запись из файла txt или mdb в базу данных DerSky БД в Delphi 6 09.06.2008 12:50