| 
| 
 | Вопрос # 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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |