Библиотека knigago >> Компьютеры: Разработка ПО >> Программирование: прочее >> Простой учебник программирования


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 2097, книга: Мои показания
автор: Геннадий Борисович Сосонко

В своей автобиографии «Мои показания» гроссмейстер Геннадий Сосонко раскрывает закулисные секреты мира шахмат, подвергая сомнению устоявшиеся традиции и амбиции элиты. Книга разделена на две части. Первая часть посвящена детству и ранней карьере Сосонко, включая его первый крупный международный успех на чемпионате мира среди юниоров. Он живо описывает свой путь к вершине шахматного мира, преодолевая личные трудности и пробиваясь сквозь политические интриги, характерные для советского...

Рик Гаско - Простой учебник программирования

Простой учебник программирования
Книга - Простой учебник программирования.  Рик Гаско  - прочитать полностью в библиотеке КнигаГо
Название:
Простой учебник программирования
Рик Гаско

Жанр:

Учебники и самоучители по компьютеру, Программирование: прочее

Изадано в серии:

Программирование

Издательство:

СОЛОН-Пресс

Год издания:

ISBN:

9785913592811

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Простой учебник программирования"

Книга написана необычным для многих — живым, простым и емким языком. Автор не любит длинных описаний программ, поэтому прерывается на пояснения, что делает книгу удобной для понимания и легкой в усвоении материала. Чтение учебника не утомляет, а наоборот, — захватывает. Это лучший учебник программирования, по крайней мере, из всех доступных на русском языке . Проработав книгу от начала и до конца, читатель получит ясное понимание — что это такое, программирование. Выбранный в дальнейшем конкретный язык программирования неважен, важны принципы. В первую очередь это книга для тех, кто, являясь профессионалом в своей области, хочет овладеть программированием или, по крайней мере, научиться разговаривать с программистами на равных. От самых начал до понятий достаточно глубоких. Прочтите и узнайте!

Читаем онлайн "Простой учебник программирования". [Страница - 43]

преимущества и недостатки того и
другого способа. А также появилось несколько глобальных (для нашего
модуля) переменных. Если по ним есть какие­то вопросы, то они
разъяснятся на следующем варианте нашей программы.
267

А теперь возникает мелкая техническая проблема ­ а в каком виде
хранить картинки в памяти ­ как они есть, то есть в хитром формате
BMP Или преобразовать их в какой­то внутренний универсальный
формат? Опять­таки предлагаю об этом поразмыслить на досуге, в
свободное время, которого у вас конечно предостаточно. А поскольку у
меня свободного времен экстремально мало, предлагаю не думать и
применить вариант номер один. Картинка грузится в память как файл, не
анализируя структуру файла. И как файл в памяти и хранится. Как файл
означает ­ если, безо всяких выкрутасов и преобразований, картинку
скопировать из памяти на диск ­ получим в точности то, что мы и
загружали.
Итак, пошли по списку процедур. Первым номером ­ загрузить картинку,
сохранить в памяти и добавить в наши списки. Или подробнее:
procedure AddPic(
begin
end;

fName

: string);

Очень скучное но очень маленькое техническое отступление. С
переходом от ДОС к Windows многие вещи значительно упростились.
Например, намного проще стала работа с указателями. А некоторые, как
легко догадаться, совсем наоборот. Как оно было в ДОСе ­ запускаем
программу и открываем ­ точнее пытаемся открыть файл. В каком
каталоге программа ищет файл? Странный вопрос в том ­ из которого
она, программа, запущена. Или нет? Вопрос, конечно, интересный и, на
самом деле, непростой. Вы позже много раз столкнётесь с этой
проблемой. В любом случае, общий алгоритм:
Перейти в текущий каталог
Проверить, существует ли файл
Узнать его размер
Выделить память в соответствующем количестве
Загрузить файл в эту память
И всё ­ освобождать память не надо!!! Мы ведь хотим, чтобы картинка
наша оставалась в доступности на всё время выполнения программы.
Получается примерно так:
268

procedure AddPic(
fname : s t r i n g ) ;
var
F
TFile;
SR
SearchRec;
integer;
rez
begin
F i n d F i r s t ( f n a m e , A r c h i v e , SR);
i f rez
0 then begin
numOf:=numOf + 1 ;
Names[numOf]:=SR.Name);
Sizes[numOf]:=SR.Size;
3etMem( P s [ n u m O f ] ,
SR.Size);
A s s i g n ( F, SR.Name);
R e S e t ( F, 1 ) ;
B l o c k R e a d ( F, P s [ n u m O f ] ^ , S R . S i z e ) ;
Close(F);
end;
end;

А теперь заглянем чуть дальше, за границы Турбо Паскаля. Из какого
каталога/директории/папки будет загружен наш файл? Очевидно ­ из
того, из которого запущена наша программа. Если файла там внезапно не
окажется, мы будем разочарованы. Забегая вперёд, в Windows всё не так.
Файл система будет искать в текущем каталоге, который совсем не
обязательно является тем самым из которого наша программа запущена.
Поэтому в Delphi настоятельно рекомендуется первой строкой любой
программы, работающей с файлами, сделать следующую:
ChDir(ExtractFilePath(ParamStr(0)));
Мы видим вызов процедуры, которая вызывает процедуру, которая
вызывает процедуру. У последней процедуры, кстати, тоже есть
параметр.
Поглядим, что они собственно делают, но не слева направо, а справа
налево. Это очень скучно, но это совершенно необходимо, поэтому оно
будет.
ParamStr ­ функция возвращающая один из параметров, с которым
вызвана наша программа. Имеется в виду, что программа вызвана из
командной стоки что­то вроде pkzip ­rP mumu. В этом случае ParamStr(I)
вернет строку "­rP', a ParamStr(2) вернет строку. "mumu". Всё это для нас
имеет сугубо исторический интерес, поскольку вряд ли придётся писать
нам программу, параметры которой передаются через командную строку.
Но вот параметр номер ноль имеет совершенно иной смысл ­ почему­то.
269

Последний параметр возвращает полный путь к запускаемой программе ­
в данном случае что­то вроде "c:\pkzip.exe". Для чего нам это нужно? В
нашем случае чтобы выковырять из этого полного имени нашей
программы путь, где она, наша программа, лежит. А затем, путем
применения процедуры ChDir туда в этот каталог и перейти ­ то есть
сделать его рабочим. А что такое рабочий каталог было объяснено
несколько раньше.
Поскольку писать этот ужас каждый раз заново совершенно невозможно,
напишем это один раз и положим в отдельный модуль, который и будем
прицеплять потом ко всем нашим программам, даже не раздумывая,
нужен он там и ли нет. Примерно так:
unit OurLib;
{
interface
{
p r o c e d u r e GoHome;
{
implementation
uses
Dos;
{
p r o c e d u r e --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.