Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка. что делать? 
:(
    Опции темы
MaxSSimus
Дата 17.1.2008, 06:56 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Код

procedure TForm1.ReDraw;
var
  OutputdUFile,OutputRhoFile,
  OutputSTIsFile,OutputStauEpFile                           :textfile;
  OutputFileName                                            :string;
  ii                                                        :integer;
begin
 {============Считываем файл RhoTau / t ================}
 Path:=ProgrammPath+'\1D\';
// Path:='D:\SGS\TEM\Model1\1D\';
 OutputFileName := Path+'UZHZ1DR.dat';
 AssignFile(OutputRhoFile,OutputFileName);
 Reset(OutputRhoFile);
  for ii:=1 to 3 do ReadLn(OutputRhoFile);
  for ii:=1 to NTimes  do
  begin
     ReadLn(OutputRhoFile, ModTime[ii],ModRho[ii]);  
   end;
  CloseFile(OutputRhoFile);
  Chart1.Series[0].Clear;
  for ii:=1 to NTimes  do
  begin
    Chart1.Series[0].AddXY(ModTime[ii], ModRho[ii], '');
  end;
end;



ReadLn(OutputRhoFile, ModTime[ii],ModRho[ii]);    raised exception class EINOUTERROR with mesage 'Invalid numeric input'. Process stoped/ Use Step or Run to continue


тут выдаёт ошибку. что делать?


M
Alexeis
Модератор: Название темы должно отражать ее суть!

PM MAIL   Вверх
MetalFan
Дата 17.1.2008, 09:10 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



не подавать на ввод инвалидное значение.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
gambit
Дата 17.1.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Код

 for ii:=1 to 3 do ReadLn(OutputRhoFile);

Что делает эта строка???

Какие типы переменных ModTime[ii]  ModRho[ii]  
дай пример файла.

Ну я так подозреваю что переменные эти string и по этому попробуй 
вместо
Код

for ii:=1 to NTimes  do
  begin
     ReadLn(OutputRhoFile, ModTime[ii],ModRho[ii]);  
   end;


сделать
Код

for ii:=1 to NTimes  do
  begin
     ReadLn(OutputRhoFile, ModTime[ii]);
ModRho[ii]:= ModTime[ii]; 
   end;

Может я конечно глупость сморозил, строго не судите. (Спать хочется и delphi под рукой нет)
PM MAIL ICQ Skype   Вверх
remax
Дата 18.1.2008, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: нет
Всего: 5



Цитата(gambit @  17.1.2008,  13:52 Найти цитируемый пост)
Может я конечно глупость сморозил, строго не судите.

Глупость-не глупость, но что-то загадочное точно.  smile 
Самое интересное, что Ваше предположение 
Цитата(gambit @  17.1.2008,  13:52 Найти цитируемый пост)
Ну я так подозреваю что переменные эти string

очень логичное и весьма вероятное.  smile  Но чем поможет присвоение Y:=X   - не знаю.  smile 

Подождем, когда MaxSSimus уточнит тип этих массивов. И если они строковые, а значения в серии вещественные, то -  
Код

Chart1.Series[0].AddXY(StrToFloat(ModTime[ii]), StrToFloat(ModRho[ii]), '');


Если в серии значения другого типа, то соответствующее преобразование.

Хотя, мне кажется эти промежуточные массивы вообще не  нужны. Достаточно использовать две переменные. И цикл чтения из файла объединить с добавлением данных в серию. Побочным положительным эффектом будет то, что тогда не будет ограничения на размер серии данных.  smile  


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
gambit
Дата 18.1.2008, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Код

ReadLn(OutputRhoFile, ModTime[ii],ModRho[ii]);

Цитата

Но чем поможет присвоение Y:=X   - не знаю

Может я ошибаюсь delphi под рукой нет, но мне кажется если они string то переменная 
ModTime[ii] прочитает всю строку и поставит курсор в конец строки, а переменной ModRho[ii] читать нечего. Может в этом ошибка?
PM MAIL ICQ Skype   Вверх
remax
Дата 19.1.2008, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: нет
Всего: 5



Цитата(gambit @  18.1.2008,  10:13 Найти цитируемый пост)
ModTime[ii] прочитает всю строку и поставит курсор в конец строки, а переменной ModRho[ii] читать нечего. Может в этом ошибка? 

Ну, если переменная объявлена как string, то ты прав - ничего хорошего не получится. Но, если в файле форматированные значения (скажем, столбцы фиксированной ширины, на 8 символов каждый), а тип данных с ограничением размера (Например, string[8]), то все пучком. 

Я бы, в любом случае не использовал строковые переменные. А если бы и был вынужден это делать, то читал бы построчно и каждую строку тогда бы парсил. Но это, только в том случае, когда надо подстроиться под разные текстовые форматы.


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
MaxSSimus
Дата 20.1.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Дело в том, что ModRho и ModTime не что иное, как переменная в массиве (вроде бы так)
Код

ModRho, ModTime : array [1..5000] of double


после запуска программы я ввожу данные и пытаюсь считать прямую задачу геофизики при помощи ещё одной (DOS) программки
вот часть кода
    
Код

//Path:='D:\SGS\TEM\Model1\1D\';
 Path:=ProgrammPath+'\1D\';
  DeleteFile(Path+'UZHZ1D.REZ');
{================Прямая задача 1D==================}
// if not ExecuteFile(MainForm,Path,'UZHZ1D.EXE') then
 // exit;
  CreateProcess(NIL,PChar(Path+'UZHZ1D.EXE'),NIL,NIL,false,NORMAL_PRIORITY_CLASS,
                NIL,PChar(Path), TSI, TPI);
 
 //CalcDone1D:=true;
// SpeedButton9Click(Sender);
 //CalcModelStau1D;
 ReDraw;
end;



потом она пишет, что ([Warning] Inter_TEM.pas(728): Unsafe type 'PChar') вот тут (выделено жирным) косяк.
и кидает в том место, где я ранее описал.

Файл для чтения я приклеил

Это сообщение отредактировал(а) MaxSSimus - 20.1.2008, 16:04

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  UZHZ1DR.DAT 24,66 Kb
PM MAIL   Вверх
MaxSSimus
Дата 21.1.2008, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Спасибо всем, кто откликнулся. Я уже разобрался.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1164 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.