![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день!
Ситуация такая: написал программу,используя savedialog и opendialog, которая сохраняет листинг в текстовый отдельный внешний файл, а при его открывании в поле вывода выводятся только числа, кратные 3...программу защитил у преподавателя, но он мне сказал, чтобы я сделал замену( выделено красным что заменить, на зеленый чем заменить, так , чтобы все работоспособноть сохранялась...с P.S. извиняюсь заранее, не смог здесь загнать весь текст под спойлер) Код:
unit misterx1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) Label1: TLabel; Button1: TButton; Button2: TButton; SaveDialog1: TSaveDialog; OpenDialog1: TOpenDialog; Edit1: TEdit; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var F : textfile; f1:string ; procedure TForm1.Button1Click(Sender: TObject); begin if edit1.text=''then begin showmessage('поля ввода не заполнено!'); exit; end; if SaveDialog1.Execute then begin //введено имя файла assignfile(f,savedialog1.filename); rewrite(f); f1:= edit1.text; write(f, f1); end; CloseFile(F); end; procedure TForm1.Button2Click(Sender: TObject); Var i: Byte; n:integer; chislo:string; begin if OpenDialog1.Execute then begin //введено имя файла assignfile(f, opendialog1.filename); reset(f); read(f, f1); label2.caption:=f1 ; n:=length(label2.caption); edit1.Text:=''; for i:=1 to n do while not Eof(f) do begin if label2.caption[i]<>';'then begin chislo:=chislo+label2.caption[i]; end else begin if (0=strtoint(chislo) mod 3) then begin edit1.text:=edit1.text + chislo + ' ' ; end; chislo:='' end; end; end; end; end. Последний раз редактировалось smiger, 13.05.2010 в 15:54. |
#2
|
||||
|
||||
![]() Код:
while not Eof(f) do p.s. код просто ужасен. Arrrgh |
#3
|
|||
|
|||
![]() я , наверное, плохо изъяснился)
Тогда мне нужно полностью поменять структуру программы, и избавиться от i счетчика, вместо него вставить оператор while... |
#4
|
||||
|
||||
![]() тогда так:
Код:
i := 1; while i <= n do begin if label2.caption[i]<>';'then begin chislo:=chislo+label2.caption[i]; end else begin if (0=strtoint(chislo) mod 3) then begin edit1.text:=edit1.text + chislo + ' ' ; end; chislo:='' end; inc(i); end; Arrrgh |
#5
|
|||
|
|||
![]() спасибо, но это пол дела....
теперь надо с while not eof (f) do...посильно?) |