Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 16.06.2010, 10:40   #1 (permalink)
ДенисКО
Member
 
Регистрация: 02.11.2009
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Делфи, работа с файлами

Пусть дан файл целых чисел f1. Создайте два новых файла f2 и f3 из положительных и отрицательных чисел соответственно.

unit lab1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
ListBox2: TListBox;
ListBox3: TListBox;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var f:TextFile;
a:integer;
begin
AssignFile(f,'l1_in.txt');
Reset(f);
while not eof(f) do
begin
Read(f,a);
ListBox1.Items.Add(Inttostr(a));
end;
closefile(f);
for a:=0 to listbox1.Count-1 do
if Strtoint(ListBox1.Items.Strings[a])>=0 then
listbox2.Items.Add(ListBox1.Items.Strings[a]) else listbox3.Items.Add(ListBox1.Items.Strings[a]);
if Listbox2.Count=0 then listbox2.Items.Add('Нет положительных');
if Listbox3.Count=0 then listbox3.Items.Add('Нет отрицательных');
ListBox2.Items.SaveToFile('l1_max_out.txt');
ListBox3.Items.SaveToFile('l1_min_out.txt');
end;
end.



Заменить блок:
AssignFile(f,'l1_in.txt');
Reset(f);
while not eof(f) do
begin
Read(f,a);
ListBox1.Items.Add(Inttostr(a));
end;
closefile(f);
for a:=0 to listbox1.Count-1 do
if Strtoint(ListBox1.Items.Strings[a])>=0 then
listbox2.Items.Add(ListBox1.Items.Strings[a]) else listbox3.Items.Add(ListBox1.Items.Strings[a]);
if Listbox2.Count=0 then listbox2.Items.Add('Нет положительных');
if Listbox3.Count=0 then listbox3.Items.Add('Нет отрицательных');
ListBox2.Items.SaveToFile('l1_max_out.txt');
ListBox3.Items.SaveToFile('l1_min_out.txt');

так чтобы запись результатов шла сразу в файлы
ДенисКО вне форума   Ответить с цитированием

Старый 16.06.2010, 10:40
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Посты которые имеют сходства с вашей темой

Паскаль, работа с файлами
Работа с файлами на Паскале
Проблема с файлами
Работа с файлами
Работа с текстовыми файлами Си

Старый 16.06.2010, 10:52   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 14,939
Записей в дневнике: 57
Сказал(а) спасибо: 135
Поблагодарили 164 раз(а) в 69 сообщениях
Репутация: 67284
По умолчанию

используйте команду rewrite
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 20.06.2010, 13:04   #3 (permalink)
ДенисКО
Member
 
Регистрация: 02.11.2009
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

вот так?

begin
AssignFile(f,'l1_in.txt');
Reset(f);
while not eof(f) do
begin
Read(f,a);
ListBox1.Items.Add(Inttostr(a));
end;
closefile(f);
for a:=0 to listbox1.Count-1 do
if Strtoint(ListBox1.Items.Strings[a])>=0 then
ReWrite (l1_max_out.txt);
write Inttostr(ListBox1.Items.strings[a]);
closefile(l1_max_out.txt); else
ReWrite ( l1_min_out.txt);
write Inttostr(ListBox1.Items.strings[a]);
closefile ( l1_min_out.txt) ;
end;
ДенисКО вне форума   Ответить с цитированием
Старый 20.06.2010, 13:18   #4 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,843
Сказал(а) спасибо: 317
Поблагодарили 542 раз(а) в 183 сообщениях
Репутация: 101510
По умолчанию

Знаете, я ничего не понимаю в этих формах, боксах, кнопках и прочем, но только если Вы используете конструкцию if ... then ... else, причем количество операций там больше одной, то необходимы операторные скобки, т. е. должно быть
if ... then begin ... end else begin ... end;
Причем перед else разделитель (точка с запятой) не ставится.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:34.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.