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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2012, 12:32   #1
alexanderrrr
Пользователь
 
Регистрация: 16.06.2012
Сообщений: 11
По умолчанию Работа с OpenDialog

в программе нужно выбирать файл посредством OpenDialog (и вывод в стринггрид), как это реализовать?

сама программа прилагается

PHP код:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrlsGrids;

type
  TForm1 
= class(TForm)
    
StringGrid1TStringGrid;
    
Memo1TMemo;
    
Button1TButton;
    
Edit1TEdit;
    
Label1TLabel;
    
OpenDialog1TOpenDialog;
    
procedure Button1Click(SenderTObject);
    
procedure FormCreate(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
 
Form1TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(SenderTObject);
 var 
f:TextFile;
    
minX,maxX,minY,maxY,
    
X,Y:double;
    
i:integer;
begin
 Memo1
.Clear;
 
AssignFile(f,Edit1.Text);
 try
 
reset(f);
 
i:=0;
 while 
not eof(f) do
  
begin
   inc
(i);
   
StringGrid1.RowCount:=i+1;
   
readln(f,X,Y);
   if (
X<minX) or (i=1then minX:=X;
   if (
X>maxX) or (i=1then maxX:=X;
   if (
Y<minY) or (i=1then minY:=Y;
   if (
Y>maxY) or (i=1then maxY:=Y;
   
StringGrid1.Cells[0,i]:=FloatToStr(X);
   
StringGrid1.Cells[1,i]:=FloatToStr(Y);
  
end;
 
CloseFile(f);
 if 
i=0 then
   Memo1
.Lines.Append('отсутствуют данные')
  else
   
begin
    Memo1
.Lines.Append('minX= ' FloatToStr(minX));
    
Memo1.Lines.Append('maxX= ' FloatToStr(maxX));
    
Memo1.Lines.Append('minY= ' FloatToStr(minY));
    
Memo1.Lines.Append('maxY= ' FloatToStr(maxY));
   
end;
except              
 ShowMessage
('отсутствует указанный файл');
end
end
;
procedure TForm1.FormCreate(SenderTObject);
begin
 StringGrid1
.Cells[0,0]:='X';
 
StringGrid1.Cells[1,0]:='Y';
 
StringGrid1.RowCount:=2;
 
StringGrid1.FixedRows:=1;
end;
end
Вложения
Тип файла: zip 1.zip (242.6 Кб, 9 просмотров)
alexanderrrr вне форума Ответить с цитированием
Старый 10.07.2012, 12:45   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

На форме разместить OpenDialog.
В процедуре:
Код:
begin
  Memo1.Clear;
  if OpenDialog1.Execute then
    Edit1.Text := OpenDialog1.FileName
  else
    Exit;
  AssignFile(f,Edit1.Text);
  ...
Прик вне форума Ответить с цитированием
Старый 10.07.2012, 12:55   #3
alexanderrrr
Пользователь
 
Регистрация: 16.06.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
На форме разместить OpenDialog.
В процедуре:
Код:
begin
  Memo1.Clear;
  if OpenDialog1.Execute then
    Edit1.Text := OpenDialog1.FileName
  else
    Exit;
  AssignFile(f,Edit1.Text);
  ...
после этого начинает ругаться на except
alexanderrrr вне форума Ответить с цитированием
Старый 10.07.2012, 13:24   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

У меня не ругается:
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var f:TextFile;
    minX,maxX,minY,maxY,
    X,Y:double;          //данные из файла
    i:integer;           //номер строки заполнения
begin
  Memo1.Clear;
  if OpenDialog1.Execute then
    Edit1.Text := OpenDialog1.FileName
  else
    Exit;
  AssignFile(f, Edit1.Text);  // связь файловой переменной
  try
    reset(f);                  // попытка открытия файла
    i:=0;
    while not eof(f) do begin
      inc(i);                    // увеличить номер строки
      StringGrid1.RowCount := i+1; //  количество линий
      readln(f,X,Y);

      if (X<minX) or (i=1) then minX:=X;
      if (X>maxX) or (i=1) then maxX:=X;
      if (Y<minY) or (i=1) then minY:=Y;
      if (Y>maxY) or (i=1) then maxY:=Y;
      StringGrid1.Cells[0,i] := FloatToStr(X);
      StringGrid1.Cells[1,i] := FloatToStr(Y);
    end;
    CloseFile(f);     // закрытие файла

   // вывод результата
    if i=0 then
      Memo1.Lines.Append('Отсутствуют данные')
    else begin
      Memo1.Lines.Append('minX= ' + FloatToStr(minX));
      Memo1.Lines.Append('maxX= ' + FloatToStr(maxX));
      Memo1.Lines.Append('minY= ' + FloatToStr(minY));
      Memo1.Lines.Append('maxY= ' + FloatToStr(maxY));
    end;
  except
    ShowMessage('Отсутствует указанный файл');
  end
end;
Прик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с Opendialog ZhekON Компоненты Delphi 4 14.06.2013 15:21
OpenDialog CodeNOT C++ Builder 4 21.05.2011 10:35
Некорректная работа OpenDialog в win7 Gonzo Компоненты Delphi 0 21.12.2010 15:12
opendialog blackstersl Общие вопросы Delphi 4 18.09.2008 15:21
OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect]; necky Компоненты Delphi 2 11.08.2007 12:53