Паскаль рулит!

Обсуждение ПО и железа

Модератор: Taifun

Ответить
Аватара пользователя
neXeuse
Сообщения: 50
Зарегистрирован: Пт, 21 апр 2006 15:31:34
Откуда: (указывает вдаль)во-о-он оттуда

Паскаль рулит!

Сообщение neXeuse »

Код: Выделить всё

uses crt;
var i:byte;
begin clrscr;
i:=255;
for i:=(i+1)div 16-16 to i do begin
 write(i,' ');i:=round(sin(i)*16);
end;
readkey end.
Гы! :D
На дельфе такое не сделаеш! 8)
A signature is a little text that can be added at the bottom of your posts. It's limited to 255 characters on 5 line(s) and as many images as you want but none can exceed 75x500 pixels, for a maximum of 10Kb. In your text, no more than 100 characters ...
Code(R)
Сообщения: 420
Зарегистрирован: Чт, 25 май 2006 13:10:49

Сообщение Code(R) »

Извращенец... :D

Код: Выделить всё

for i:=(i+1)div 16-16 to [b]i[/b]
Это, конечно, оригинально. И самое странное - будет работать, т.к. значение переменной i пишется в регистр, а потом, на каждой итерации, i просто сравнивается с этим значением.
Sany
Сообщения: 1684
Зарегистрирован: Пн, 25 апр 2005 11:38:09
Контактная информация:

Re: Паскаль рулит!

Сообщение Sany »

neXeuse писал(а): uses crt;
var i:byte;
begin clrscr;
i:=255;
for i:=(i+1)div 16-16 to i do begin
write(i,' ');i:=round(sin(i)*16);
end;
readkey; end.
ГЫЫЫЫ :D
Изображение
"Что это? Что за формулы? Бумаги? Бумага сводят с ума! Сводят с ума и манят в ночь. И я ее сжигаю... по неизвестной мне причине.
Валим отсюда пока песня не кончилась, а то музыка знает что мы здесь"
(С) Фитц
Аватара пользователя
Jigit
Сообщения: 13294
Зарегистрирован: Вт, 11 июл 2006 08:19:55

Сообщение Jigit »

А на ассемблере можн и не такое написать. Главное, будет эффективнее использоваться процессор.
Code(R)
Сообщения: 420
Зарегистрирован: Чт, 25 май 2006 13:10:49

Re: Паскаль рулит!

Сообщение Code(R) »

Sany писал(а):
neXeuse писал(а): uses crt;
var i:byte;
begin clrscr;
i:=255;
for i:=(i+1)div 16-16 to i do begin
write(i,' ');i:=round(sin(i)*16);
end;
readkey; end.
ГЫЫЫЫ :D
Нет, не "ГЫЫЫЫ". :D Точку с запятой можно и не ставить. :!:
Аватара пользователя
Jigit
Сообщения: 13294
Зарегистрирован: Вт, 11 июл 2006 08:19:55

Сообщение Jigit »

Вот блььь, не заметил. А ведь действительно можно не ставить точку с запятой. Ее вообще можно не ставить после begin и перед end. в конце программы.
Code(R)
Сообщения: 420
Зарегистрирован: Чт, 25 май 2006 13:10:49

Сообщение Code(R) »

Jigit писал(а):Вот блььь, не заметил. А ведь действительно можно не ставить точку с запятой. Ее вообще можно не ставить после begin и перед end. в конце программы.
И перед end; в середине программы. :wink: :!:
Аватара пользователя
Jigit
Сообщения: 13294
Зарегистрирован: Вт, 11 июл 2006 08:19:55

Сообщение Jigit »

Да забыл, спасибо, что напомнил
Sany
Сообщения: 1684
Зарегистрирован: Пн, 25 апр 2005 11:38:09
Контактная информация:

Re: Паскаль рулит!

Сообщение Sany »

Code(R) писал(а):
Sany писал(а):
neXeuse писал(а): uses crt;
var i:byte;
begin clrscr;
i:=255;
for i:=(i+1)div 16-16 to i do begin
write(i,' ');i:=round(sin(i)*16);
end;
readkey; end.
ГЫЫЫЫ :D
Нет, не "ГЫЫЫЫ". :D Точку с запятой можно и не ставить. :!:
я в этом году занял призавое место на краевой олимпиаде по паскалю, и незнал такого :D вот я ламер :lol:
Изображение
"Что это? Что за формулы? Бумаги? Бумага сводят с ума! Сводят с ума и манят в ночь. И я ее сжигаю... по неизвестной мне причине.
Валим отсюда пока песня не кончилась, а то музыка знает что мы здесь"
(С) Фитц
Аватара пользователя
Jigit
Сообщения: 13294
Зарегистрирован: Вт, 11 июл 2006 08:19:55

Сообщение Jigit »

А если пишешь asm, то точку с запятой вообще ставить не надо. Она интерпретируется как начало коммента.
Аватара пользователя
neXeuse
Сообщения: 50
Зарегистрирован: Пт, 21 апр 2006 15:31:34
Откуда: (указывает вдаль)во-о-он оттуда

Сообщение neXeuse »

И еще один прикол-рисование кругов:

Код: Выделить всё

procedure krug(x,y,xrad,yrad,dx,dy,startangle,endangle,pun,del,pena:integer);var angle:integer;begin
for angle:=startangle to endangle do begin
 if(dx>0)and(angle mod dx=0)then xrad:=xrad+1;if(dx<0)and(angle mod dx=0)then xrad:=xrad-1;
 if(dy>0)and(angle mod dy=0)then yrad:=yrad+1;if(dy<0)and(angle mod dy=0)then yrad:=yrad-1;
 case pena of
  1:begin xrad:=xrad+yrad;yrad:=yrad-xrad end;
  2:begin xrad:=xrad-yrad;yrad:=yrad+xrad end;
 end;
 if pun<>-1then if angle mod 2=0 then setcolor(pun) else setcolor(pun+8);
 line(x+round(xrad*sin(angle*pi/180)),y+round(yrad*cos(angle*pi/180)),
 x+round(xrad*sin((angle+1)*pi/180)),y+round(yrad*cos((angle+1)*pi/180)));
 if del<>0 then delay(del);
end;
end;
krug(позиция x,позиция y,радиус x,радиус y,изменение x*,изменение y*,стартовый угол,окончательный угол,цвет пунктира**,задержка при рисовании,приколы***)
* чем меньше,тем больше изменение,0-нету
** -1-нету пунктира
*** 0-без приколов;1,2-с приколами.Желательно с разными радиусами :twisted:

Сигнал SOS:

Код: Выделить всё

y:=240;
x:=200;krug(x,y,100,100,-1,0,180,360,6,100,0);krug(x,y,100,100,-1,0,0,180,6,100,0);
x:=320;krug(x,y,100,100,-2,0,180,360,6,100,0);krug(x,y,100,100,-2,0,0,180,6,100,0);
x:=440;krug(x,y,100,100,-1,0,180,360,6,100,0);krug(x,y,100,100,-1,0,0,180,6,100,0);
A signature is a little text that can be added at the bottom of your posts. It's limited to 255 characters on 5 line(s) and as many images as you want but none can exceed 75x500 pixels, for a maximum of 10Kb. In your text, no more than 100 characters ...
Аватара пользователя
Soul
Сообщения: 907
Зарегистрирован: Вт, 31 май 2005 00:15:58
Контактная информация:

Сообщение Soul »

Как в паскале программно скопировать и перенести файл?
Аватара пользователя
BATMEN
Сообщения: 7786
Зарегистрирован: Вс, 05 дек 2004 20:05:20
Откуда: :ɐдʎʞɯО
Контактная информация:

Сообщение BATMEN »

Soul писал(а):Как в паскале программно скопировать и перенести файл?
Не знаю, в делфи скопировать можно с помощью WinAP функции:

Код: Выделить всё

 CopyFile('откуда', 'куда'); 


Перенести ваще фик знает как, только что сначала скопировать а потом грохнуть, то там фигово будет, т.к. если на одном диске то долго...
Sany
Сообщения: 1684
Зарегистрирован: Пн, 25 апр 2005 11:38:09
Контактная информация:

Сообщение Sany »

Soul писал(а):Как в паскале программно скопировать и перенести файл?
переносить помойму вообще нельзя. паскаль вроде не может подавать каманду виндоусу на удаление :? ...
Изображение
"Что это? Что за формулы? Бумаги? Бумага сводят с ума! Сводят с ума и манят в ночь. И я ее сжигаю... по неизвестной мне причине.
Валим отсюда пока песня не кончилась, а то музыка знает что мы здесь"
(С) Фитц
Аватара пользователя
Soul
Сообщения: 907
Зарегистрирован: Вт, 31 май 2005 00:15:58
Контактная информация:

Сообщение Soul »

BATMEN писал(а):
Soul писал(а):Как в паскале программно скопировать и перенести файл?
Не знаю, в делфи скопировать можно с помощью WinAP функции:

Код: Выделить всё

 CopyFile('откуда', 'куда'); 


Перенести ваще фик знает как, только что сначала скопировать а потом грохнуть, то там фигово будет, т.к. если на одном диске то долго...
Не эта функция в паскале не прокатит. В паскале к стати вообще не предусмотренно ничего для того чтобы копировать файлы, поэтому надо руками. Там можно воспользоваться комамндами DOSа, и еще я думаю как вторым вариантом можно файл копируемый поместить в буфер памяти, а потом воткнуть его куда надо. А на счет перенести это вообще легко, я просто не подумал когда задавал вопрос, сначало надо скопировать файл, а потом удалить исходный, винда же так делает
Вложения
DELIT_FILE.zip
Прога удаляет файлы из под доса. Не знаю как на счет больших, но маленькие точно удаляет безвозвратно.
(2.13 КБ) 28 скачиваний
Аватара пользователя
BATMEN
Сообщения: 7786
Зарегистрирован: Вс, 05 дек 2004 20:05:20
Откуда: :ɐдʎʞɯО
Контактная информация:

Сообщение BATMEN »

гм, винда не совсем так делает, если ты допустим переносишь файл из одной дириктории в другую, и если директории находятся на одном диске, то весь файл не будет перемещаться, а изменится только адрес файла, а физически файл останется на том же месте. Еще слышал (тока вроде не встречал этого) что NTFS может скопировать как бы файл на одном диске, хотя на самом деле физически будет один файл, но будет отображаться в разных директориях, а если его потом изменить одиу из копий, тогда будет уже физически 2 файла.

Ну надеюсь в паскале можно такое сделать:

Код: Выделить всё

var
F1, F2 : File;
Buf     : integer;

begin
Assign(F1, 'FileInput.xxx');
Assign(F2, 'FileOutput.xxx');
Reset(F1, 1);
Rewrite(F2, 1);

while not eof(F1) do
 begin
   BlockRead(F1, Buf, SizeOf(Buf));
   BlockWrite(F2, Buf, SizeOf(Buf));
 end;

CloseFile(F1);
CloseFile(F2)

end;

Аватара пользователя
Soul
Сообщения: 907
Зарегистрирован: Вт, 31 май 2005 00:15:58
Контактная информация:

Сообщение Soul »

Я думаю при небольших изменениях этот код работать будет, я почти так же поначалу пытался сделать, только у меня ошибка с буфером была, я неправильно его задавал. В этом коде тоже ошибка может выскочить если попытаться скопировать большой файл, памяти не хватит. Тамма надо юзать динамическую память и все будет тип-топ.
Аватара пользователя
BATMEN
Сообщения: 7786
Зарегистрирован: Вс, 05 дек 2004 20:05:20
Откуда: :ɐдʎʞɯО
Контактная информация:

Сообщение BATMEN »

Мне кажется что разницы нету. ВОт только вот не знаю, если буфер например int 4 - байта, а в файле останется кусок размером 3 или меньше, то произойдет ли ошибка.... надо будет попробовать. Можно конечно и типа байт под буффер взять, только чем он меньше, тем дольше будет происходить операция копирования.
Аватара пользователя
Soul
Сообщения: 907
Зарегистрирован: Вт, 31 май 2005 00:15:58
Контактная информация:

Сообщение Soul »

Варооче Бэтман попробовал я копировать 6 метровый файл с твоим кодом, я думал к старости моей только это дело закончиться, очень долго. Надо чета решать с буфером, увеличевть его надо
Аватара пользователя
BATMEN
Сообщения: 7786
Зарегистрирован: Вс, 05 дек 2004 20:05:20
Откуда: :ɐдʎʞɯО
Контактная информация:

Сообщение BATMEN »

Сделай массив динамический для буфера. Только еще нужно проверки дополнительные нужно дудет делать.
Аватара пользователя
Executor
Сообщения: 2642
Зарегистрирован: Пт, 07 мар 2003 20:41:08
Контактная информация:

Re: Паскаль рулит!

Сообщение Executor »

neXeuse писал(а):

Код: Выделить всё

uses crt;
var i:byte;
begin clrscr;
i:=255;
for i:=(i+1)div 16-16 to i do begin
 write(i,' ');i:=round(sin(i)*16);
end;
readkey end.
Гы! :D
На дельфе такое не сделаеш! 8)
Почему не сделаешь? Или я чегото не понял в этом коде?
Soul писал(а):Как в паскале программно скопировать и перенести файл?
1) Открываешь файл 1 на чтение
2) Создаёшь файл 2 и открываешь его на запись
3) Читаешь некоторое количество байт из файла 1 (4 мб к примеру, если файл меньше этого размера, то весь файл читаешь) в память
4) Записываешь то, что прочитали в память, в файл 2
5) Повторяешь пункты 3 и 4 пока не закончиться файл 1
6) Закрываешь файл 1 и файл 2
Sany писал(а):переносить помойму вообще нельзя. паскаль вроде не может подавать каманду виндоусу на удаление :? ...
Можно делать что угодно...
Code(R)
Сообщения: 420
Зарегистрирован: Чт, 25 май 2006 13:10:49

Re: Паскаль рулит!

Сообщение Code(R) »

Executor писал(а):
neXeuse писал(а):

Код: Выделить всё

uses crt;
var i:byte;
begin clrscr;
i:=255;
for i:=(i+1)div 16-16 to i do begin
 write(i,' ');i:=round(sin(i)*16);
end;
readkey end.
Гы! :D
На дельфе такое не сделаеш! 8)
Почему не сделаешь? Или я чегото не понял в этом коде?
Видимо, потому что Delphi не разрешает менять в цикле с параметром переменную - параметр (в данном случае i).
Executor писал(а): Можно делать что угодно...
+1 :!:
Аватара пользователя
Jigit
Сообщения: 13294
Зарегистрирован: Вт, 11 июл 2006 08:19:55

Сообщение Jigit »

Народ, перестаньте использовать оператор повтора for, оспользуйте лучше while, как хочешь, так и извращайся с переменной.
Code(R)
Сообщения: 420
Зарегистрирован: Чт, 25 май 2006 13:10:49

Сообщение Code(R) »

Jigit писал(а):Народ, перестаньте использовать оператор повтора for, оспользуйте лучше while, как хочешь, так и извращайся с переменной.
ЛОЛ! :D :twisted:
Для разных задач - разные средства. :!:
Аватара пользователя
Soul
Сообщения: 907
Зарегистрирован: Вт, 31 май 2005 00:15:58
Контактная информация:

Сообщение Soul »

Jigit писал(а):Народ, перестаньте использовать оператор повтора for, оспользуйте лучше while, как хочешь, так и извращайся с переменной.
Так все поняли! Чтоб больше не пользовали for, это зло, так Jigit сказал! Используйте while, он круче и с ним можно извращаться.
:lol:
Ответить

Вернуться в «Software & hardware»