|
Вопрос # 1 996/ вопрос решён / |
|
Здравствуйте, эксперты! У меня такая проблема! Нужно чтобы программа вывела, скажем в Memo, все числа в диапозоне от 000000000 до 999999999, а потом при нажатии кнопки сохранила все эти числа в txt.
Заранее благодарю!
 |
Вопрос задал: Ученый (статус: 8-ой класс)
Вопрос отправлен: 14 октября 2008, 19:10
Состояние вопроса: решён, ответов: 2.
|
Ответ #1. Отвечает эксперт: Аксион
Здравствуйте, Ученый!
Используйте вот этот код:
var
x:integer;
begin
for x:= 0 to 999999999 do
begin
memo1.Lines.Add(inttostr(x));
if x=999999999 then memo1.Lines.SaveToFile('name.txt');
end;
end;
Комментарии излишне...
П.с. ждать вы будите ОЧЕНЬ долго :-)
 |
Ответ отправил: Аксион (статус: 4-ый класс)
Время отправки: 14 октября 2008, 19:29
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: ANBsoft
Здравствуйте, Ученый!
А зачем проверка в цикле?
Лучше так:
var
x:integer;
begin
for x:= 0 to 999999999 do
memo1.Lines.Add(inttostr(x));
memo1.Lines.SaveToFile('name.txt');
end;
Но ничего хорошего из этого не выйдет, в системе не хватит памяти для выполнения.
1 000 000 000 строк по 9 байт = примерно 9 гигабайт,
виндовс (не х64) обеспечит максимум 2Гб.
Если сильно нужно - пишите в цикле сразу в файл - будет долго, но должно сделать (при условии что на диске NTFS а не FAT32).
 |
Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 14 октября 2008, 19:37
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 15; последнее сообщение — 15 октября 2008, 14:11; участников в обсуждении: 6.
|
Ученый (статус: 8-ой класс), 14 октября 2008, 19:36 [#1]:
to Блазер. Но проблема в том что в данном случае числа иду 1,2,3 и тд., а мне надо чтобы они шли 000000001, 000000002, 000000003 и так до 999999999.
|
|
ANBsoft (статус: Студент), 14 октября 2008, 19:41 [#2]:
нужно 000000001,
примерно так:
var
x:integer;
s:String;
begin
for x:= 0 to 999999999 do begin
s:=inttostr(x);
while length(s<9) do s:='0'+s';//Можно сделать чуть быстрее, но врядли будете писать до 999999999
memo1.Lines.Add(s);
end;
memo1.Lines.SaveToFile('name.txt');
end;
|
|
Ученый (статус: 8-ой класс), 14 октября 2008, 19:45 [#3]:
to Бубырь Александр Николаевич. Выдаёт [Error] Unit1.pas(35): Incompatible types: 'String' and 'Integer'!
|
|
Аксион (статус: 4-ый класс), 14 октября 2008, 19:45 [#4]:
to Бубырь Александр Николаевич Извените не подумал Да, так правельнее...
to Ученый, а для чего если не секрет?
|
|
Ученый (статус: 8-ой класс), 14 октября 2008, 19:46 [#5]:
Задание мне дали такое! Для чего пока сам с трудом понимаю.
|
|
ANBsoft (статус: Студент), 14 октября 2008, 19:48 [#6]:
не попал:
while length(s)<9 do s:='0'+s';
|
|
Amidamaru (статус: 4-ый класс), 14 октября 2008, 19:50 [#7]:
помоему вместо while length(s<9) do s:='0'+s';
быстрее s:=format('%.9d',[x]);
|
|
ANBsoft (статус: Студент), 14 октября 2008, 19:54 [#8]:
согласен, сам форматом никогда не пользовался, потому написал на скорую руку.
Впрочем задача чисто академическая, на практике она не отработает (по крайней мере с этими числами).
|
|
Dron (статус: Студент), 14 октября 2008, 22:41 [#9]:
С x: integer ничего работать не может в принципе.
С уважением.
|
|
ANBsoft (статус: Студент), 14 октября 2008, 23:15 [#10]:
почему не может?
Integer –2147483648..2147483647 signed 32-bit
|
|
Dron (статус: Студент), 15 октября 2008, 08:36 [#11]:
Цитата:
почему не может?
Integer –2147483648..2147483647 signed 32-bit
Упс. Действительно, погорячился - спутал со SmallInt.
С уважением.
|
|
Вадим К (статус: Академик), 15 октября 2008, 10:44 [#12]:
да не по 9 байт, а по 11, если чесно посмотреть.
А добавлять в Мемо нормально - так это только Блазер мог догадаться... )
Мемо начнёт загибаться уже на десятке тысяч записей. То есть, добавлять будет, но очень медленно.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Ученый (статус: 8-ой класс), 15 октября 2008, 12:34 [#13]:
А во что лучше добавить?
|
|
Вадим К (статус: Академик), 15 октября 2008, 12:39 [#14]:
зачем 11 гигов текста????? редкий блокнотозаменитель первые 100 мб сможет открыть.
Если на диске файловая система FAT16/FAT32, то такой файл не удастся сохранить.на двух гигабайтах согнется.
Я бы использовал TFileStream. Он бы отработал, но я никогда не пробовал такие массивы данных записать.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Dron (статус: Студент), 15 октября 2008, 14:11 [#15]:
Автор вопроса, а зачем вам вообще это нужно? Наверняка есть способ решить задачу проще.
С уважением.
|
31 января 2011, 19:32: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|