• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Делфи, работа с файлами

ДенисКО

Новые
Регистрация
2 Ноя 2009
Сообщения
19
Реакции
0
Баллы
0
Делфи, работа с файлами

Пусть дан файл целых чисел 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');

так чтобы запись результатов шла сразу в файлы
 
используйте команду rewrite :))
 
вот так?

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;
 
Знаете, я ничего не понимаю в этих формах, боксах, кнопках и прочем, но только если Вы используете конструкцию if ... then ... else, причем количество операций там больше одной, то необходимы операторные скобки, т. е. должно быть
if ... then begin ... end else begin ... end;
Причем перед else разделитель (точка с запятой) не ставится.
 
Назад
Сверху