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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 04:42   #1
MOMOTOCHEK
 
Регистрация: 26.02.2011
Сообщений: 7
Печаль считывание с файла переменных типа datetime

есть файл в котором первая строка -это время(например 11:30, 11:40 и т.д) следующие строки-это просто числа. как считать первую строку?
пробовала считать отдельно первую строку и остальные, а потом преобразовать первую строку в тип string, что бы потом в StringGride тоже выводило как 11:30.

Код:
f:textFile;
  t:TDateTime;
   s:single;
   K_V:integer;


 if OpenDialog1.Execute then
  begin
   assignfile(f,OpenDialog1.FileName);
   reset(f);

  K_v:=kill;
  while not eoln(f) do
  begin
    if vect=kill then
      readln(f,t)  --вот здесь выдает ошибку!
    else
      read(f,s);
  inc(k_v);
  end;

SetLength(exp,k_v);
  SetLength(exp[kill].Time,150);
  reset(f);

   for j:=kill to k_v-1 do
   begin
    SetLength(exp[j].A,150);
   end;

    reset(f);

    while not eof(f) do
    begin
    read(f,exp[kill].time[i]);
     for j:=kill+1 to K_V-1 do begin
       read(f,exp[j].A[i]);
     end;
    inc(i);
    end;
еще пробовала писать touble не помогло.

Последний раз редактировалось Stilet; 26.02.2011 в 11:31.
MOMOTOCHEK вне форума Ответить с цитированием
Старый 26.02.2011, 08:41   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

весь код , иначе ничего непонятно... или вообще весь проект с файлом ввода, тогда и будет о чем говорить
phomm вне форума Ответить с цитированием
Старый 26.02.2011, 11:33   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
readln(f,t) --вот здесь выдает ошибку!
А если прочитать как строку а потом функцией StrToTime преобразовать во время?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.02.2011, 12:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
есть файл в котором первая строка -это время
пример файлика дайте, тогда будет о чём поговорить предметно.


Цитата:
Сообщение от Stilet
если прочитать как строку а потом функцией StrToTime преобразовать во время?
+1
скорее всего, так и надо будет сделать. Только не забыть переопределить локальные установки разделителей часов, минут...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.02.2011, 14:53   #5
MOMOTOCHEK
 
Регистрация: 26.02.2011
Сообщений: 7
По умолчанию

Данные в файле, который нужно считать, в таком виде:
Код:
0:00 	98	55	64	120	80
0:30 	111	56	58	120	80
1:00	114	64	54	120	80
1:30	119	70	54	120	80
2:00	89	44	56	120	80
после считывания я их вывожу в StringGrid и на график по оси Х время.

Код:
type
 Data = record
 A:array of single;
 N:integer;
 time: array of double;
end;

var
  Form1: TForm1;
  kill:integer;
  exp:array of Data;
  K_V:integer;

procedure TForm1.Button3Click(Sender: TObject);
 var
  i,j,vect:integer;
  f:textFile;
  t:Tdatetime;
   s:single;
 
  begin

  if OpenDialog1.Execute then
  begin
   assignfile(f,OpenDialog1.FileName);
   reset(f);

  K_v:=kill;
  while not eoln(f) do
  begin
    if k_v=kill then
      readln(f,t)
    else
      read(f,s);
  inc(k_v);
  end;

  SetLength(exp,k_v);
  SetLength(exp[kill].Time,150);
  reset(f);

   for j:=kill to k_v-1 do
   begin
    SetLength(exp[j].A,150);
   end;

    reset(f);

    while not eof(f) do
    begin
    read(f,exp[kill].time[i]);
     for j:=kill+1 to K_V-1 do begin
       read(f,exp[j].A[i]);
     end;
    inc(i);
    end;

     for j:=kill to k_v-1 do
    begin
     Setlength(exp[j].A,i);
     exp[j].N:=i;
    end;

   // for i:=0 to   exp[kill].N-1 do
   //exp[kill].A[i]:=floattostr(exp[kill].time[i]);


  StringGrid1.ColCount:=4;
  StringGrid1.RowCount:=1+exp[0].N;
  StringGrid1.Cells[0,0]:='Time';
  StringGrid1.Cells[1,0]:='SAD';
  StringGrid1.Cells[2,0]:='DAD';
  StringGrid1.Cells[3,0]:='Pyls';

   for j:=kill to k_v-1 do
     for i:=0 to exp[j].N-1 do
    StringGrid1.Cells[j+1,i+1]:=FloatToStrF(exp[j].A[i],ffFixed,7,4);
  end;
  kill:=k_v;
end;


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

Последний раз редактировалось Serge_Bliznykov; 26.02.2011 в 15:27.
MOMOTOCHEK вне форума Ответить с цитированием
Старый 27.02.2011, 10:26   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

это не чтение файла, это какой-то мрак, всё вперемешку.. см мой пост выше, даёшь проект, разберемся, ведь скорее всего неполадки с чтением Tdatetime из файла типа textfile, а может баги с переводом строк... или ещё что.. тебе лучше типизированный файл, вроде под пример данных которые ты написал подходит, заводи reсord для чтения, читай в массив этих записей, должно работать, ну или давай уже проект )) никто его себе не замутит ))
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считывание значений переменных в потоках Руслантус Общие вопросы .NET 1 09.09.2010 15:39
сложение 2 переменных типа float? sVasilich Visual C++ 7 22.06.2010 10:55
ПОИСК В БД .DBF ПО ВРЕМЕНИ И ДАТЕ В ПОЛЕ ТИПА DATETIME ЛисЁНЫШ БД в Delphi 10 05.06.2010 21:02
Считывание переменных в Webbrowser G0rdon Работа с сетью в Delphi 0 18.12.2008 21:39