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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2010, 22:37   #1
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию Использование информации из текстового файла..

Задание таково:

"Необходимо произвести обработку 15 вещественных чисел: найти среднее арифметическое отрицательных чисел и подсчитать количество чисел, входящих в диапазон от 0...5. Создать меню.. "

Нужно чтобы в программе можно было открыть текстовый файл и передать информацию в ListBox.. В текстовом файле должны находиться только цифры записанные в столбик, т.е. после записи каждого числа перевод на следующую строку..

Проблема такая я не знаю как сделать передачу чисел из текстового файла в ListBox и обратно.. т.е. при нажатии кнопки загрузить на первой форме.. я смог открыть файл.. и передать числа в ListBox.. а потом при нажатии кнопки сохранить.. произошла запись чисел из ListBox в текстовый файл.. Сами кнопки и менюшку я сделал.. а вот сам процесс передачи затрудняюсь..

и еще в первой форме сделал кнопку выхода.. что нужно написать чтобы при нажатии кнопки Выход на второй форме прога вышла со второй формы и перешла обратно на первую..??

если кто сможет помогите\объясните..

TForm1
Код:
unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, Unit2,
  Menus;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem6: TMenuItem;
    MenuItem7: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure MenuItem2Click(Sender: TObject);
    procedure MenuItem3Click(Sender: TObject);
    procedure MenuItem4Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1; 

implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Show;
end;

procedure TForm1.Button2Click(Sender: TObject);
   var a,i,g:integer;
         c,h,k: real;
begin
  a:=0;
  c:=0;
  k:=0;
  g:=0;
  a:=Form2.ListBox1.Count-1;
   for i:=0 to a do
     begin
      if (strtofloat(Form2.ListBox1.Items[i]) < 0) then
       begin
        k:=k+1;
        c:=c+strtofloat(Form2.ListBox1.Items[i]);
       end;
     end;
     h:=c/k;
     Edit1.Text:=FloattoStr(h);
   for i:=0 to a do if ((strtofloat(Form2.ListBox1.Items[i]) > 0) and (strtofloat(Form2.ListBox1.Items[i]) < 5)) then g:=g+1;
     Edit2.Text:=Inttostr(g);
     
end;

procedure TForm1.MenuItem2Click(Sender: TObject);
begin
  if OpenDialog1.Execute Then
   Begin
    Edit1.Text:=OpenDialog1.FileName;
   End;
end;

procedure TForm1.MenuItem3Click(Sender: TObject);
begin
  if SaveDialog1.Execute Then
   Begin
    Edit1.Text:=SaveDialog1.FileName;
   End;
end;

procedure TForm1.MenuItem4Click(Sender: TObject);
begin
  Application.terminate;
end;

initialization
  {$I unit1.lrs}
end.
hen вне форума Ответить с цитированием
Старый 19.05.2010, 22:37   #2
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

TForm2
Код:
unit Unit2; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Menus;

type

  { TForm2 }

  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    ListBox1: TListBox;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: char);
    procedure ListBox1Click(Sender: TObject);
    private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form2: TForm2; 

implementation

{ TForm2 }

procedure TForm2.ListBox1Click(Sender: TObject);
begin
   Edit1.Text:= ListBox1.Items[ListBox1.ItemIndex];
end;

procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: char);
begin
  case key of
  'A'..'Z':key:=#0;
  'a'..'z':key:=#0;
  'А'..'Я':key:=#0;
  'а'..'я':key:=#0;
  '!', '@' , '.' , '/', '\', '$', '^', '&', '*', '(', ')':key:=#0;
end;
end;

procedure TForm2.Button1Click(Sender: TObject);
 var d, p, i: integer;
 begin
  d:=0;
  p:=0;
  for i:=1 to length(Edit1.Text) do
    begin
     if Edit1.Text[i]='-' then d:=d+1;
    end;
  for i:=1 to length(Edit1.Text) do
    begin
     if Edit1.Text[i]=',' then p:=p+1;
    end;
  if d>1 then Edit1.Text:='Неверно' else
   if p>1 then Edit1.Text:='Неверно' else
   begin
     ListBox1.Items.Add (Edit1.Text);
     ListBox1.Sorted:= true;
     Edit1.Text:='';
   end;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  ListBox1.Items[ListBox1.ItemIndex]:= Edit1.Text;
end;

procedure TForm2.Button3Click(Sender: TObject);
begin
  ListBox1.Items.Delete(1);
end;

initialization
  {$I unit2.lrs}
end.

вот ссылка на прогу..
http://narod.ru/disk/start/14.dl5d-n...614d4/prog.rar

делал в LAZARUS..
hen вне форума Ответить с цитированием
Старый 19.05.2010, 23:42   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)ListBox.lines.loadfromFile(<filen ame>);//или items
F2.hide
F1.show
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.05.2010, 01:38   #4
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
1)ListBox.lines.loadfromFile(<filen ame>);//или items
F2.hide
F1.show

спасибо..

если честно с первым не очень понимаю.. каким образом мне это списать и куда, т.е. в каком месте и как использовать..
и еще это команда действует на загрузку данных из файла в ListBox и сохранения данных из ListBox в файл..??

а на счет второго вопросик есть..
как вы написали у меня не получилось.. он говорит что в коде второй формы не хватает модуля.. и поэтому указывает ошибку на строку Form1.Show.. но в приницпе у меня без нее все работает..

а как можно все таки реализовать такую как бы комбинацию:
при нажатии кнопки массив чисел у меня появляется форма 2..
но форма 1 остается открытой..
как бы можно было сделать такое чтобы при нажати кнопки Массив чисел форма 1 закрылась и появилась фоома 2.. а принажатии кнопки выход на форме 2.. она закрылась и появилась форма 1..

пробовал в кнопке Массив чисел первой формы написать
Код:
Form2.Show;
Form1.Hide;
с первой формой все ок..
а вот во второй все тот же модуль требует..
попробовал добавить в код второй формы в модули "Unit1", т.к. в коде первой формы в модулях есть "Unit2".. но нет опять ошибка..
hen вне форума Ответить с цитированием
Старый 21.05.2010, 22:06   #5
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

странный форум..
когда попросишь сделать с нуля..
сделают и все расскажут..
когда же пытаешься чтото сделать и просто спрашиваешь..
все молчат..
hen вне форума Ответить с цитированием
Старый 21.05.2010, 22:26   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

извините, я не частый гость
Код:
ListBox1.items.loadFromFile(<FileName, переменная или константа>);//грузит с файла
ListBox1.Items.SaveToFile(<FileName, переменная или константа>);//сохраняет
насчет второй проблемы не понял...вообще uses Unit2 в первом модуле
во втором uses Unit1
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.05.2010, 00:19   #7
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию

Просто когда в коде второй формы прописываю в раздел uses unit1:
вылетает вот такая ошибка:

"Unit2.pas(8,85) Fatal: Circular unit reference between Unit2 and Unit1"


а в первом случае возникает такая ошибка..


Последний раз редактировалось hen; 22.05.2010 в 00:27.
hen вне форума Ответить с цитированием
Старый 22.05.2010, 00:45   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы внутри чего пишите ListBox1?
какая то внешняя процедура?или обработчик кнопки?
попробуйте Form1.ListBox1
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.05.2010, 01:44   #9
hen
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 96
По умолчанию



опять похожая ошибка..


у меня нет никакой внешней процедуры.. я просто даже не знаю как это рабоатет..

попробовал в делфи7 сделать.. там вообще чтото сразу ошибки повалили..
hen вне форума Ответить с цитированием
Старый 22.05.2010, 01:47   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

так у вас есть листбокс на форме или нет?(по одному варианту кода есть, по другому нет)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из текстового файла в бд!!! Poltev86 БД в Delphi 5 16.05.2010 23:18
Использование информации атрибута файла для таблицы Excel choky Microsoft Office Excel 5 11.02.2010 16:17
создание текстового файла shaman1 Общие вопросы C/C++ 1 09.02.2010 16:13
Использование процедур(функций) при обработке экономической информации (delphi) Shadow_rus Помощь студентам 2 12.12.2009 18:11
Как с помощью классов(созданных ранее) в делфи сделать вывод информации из текстового документа PRIVIDENIE18 Помощь студентам 1 25.05.2009 12:04