Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! 58) Что вам делать дальше


Информационный Канал Subscribe.Ru

 
Школа программирования

Программирование с нуля - это совсем просто!

58) Что вам делать дальше

Спасибо всем, кто все же написал, невзирая на запрет :) ! За все благодарности и предложения денег :)

Впрочем, мне всегда были непонятны ситуации, когда есть огромный спрос на программистов и с хорошими окладами, и все что надо - это вложить в собственное обучение 20-30 долларов (которые окупятся через несколько месяцев за один рабочий день!) и пожертвовать - одной! зимой, ежедневным часом перед телевизором на час за компьютером, и затем всю жизнь заниматься интересным и перспективным делом.

А зима уже прошла. И те, кто занимался эту зиму, убежден, сужу по вашим письмам, однозначно свидетельсвтуют, что их жизнь тоже изменилась к лучшему!

Это я к тому, что перед зимой казалось - ой, так долго заниматься надо, вроде сложно и все такое... Но зима ПРОШЛА ! Вот я о чем.

Время летит быстро, и те, кто только планировал, так и продолжают планировать. И весна пройдет, и лето, а они так и будут ныть - начальник козел, платят мало, ничего в жизни не изменить... А у того, кто занимался, зима-то ТОЖЕ прошла! И для них это время уже позади, но - зато - появилась - куча новых навыков и умений.

Масштаб личности этим и определяется - способен ли человек спланировать свою жизнь, свое развитие, хотя бы на полгода вперед. А сиюминутой живут только дураки :)

Можно возразить конечно - дескать, умные люди, просветленные всякие, советуют жить здесь и сейчас. Так то это так, но тогда решите для себя, что вы хотите - добиться успеха в социальном смысле (хорошая зарплата, карьера, интересная работа - а все социальные вещи обязательно подразумевают планирование, умение распоряжаться доступными ресурсами, личностный рост), или жить как растение, имитируя чужое просветление с чужих слов. Иначе "здесь и сейчас" получается только как позорное бегство от трудностей и предлог-оправдание собственной трусости. Вот как пройдете через реальные трудности с победой, тогда уже и говорите о "духовном развитии". Иначе это все болтовня слабаков и неумех, не выросших из коротких штанишек.

Кстати, очень! рад! - уже несколько человек написали, что устроились программистами (и даже веб-дизайнерами :-)!

Школьники, студенты часто пишут, про бесплатные курсы. Ну возьмите у родителей - неужели не дадут 500 рублей на хорошее дело? Или заработайте сами. Поход в кино сколько стоит, или два батона колбасы? Впрочем, все мои курсы закрыты, поэтому не сочтите за рекламу :)

Кто занимался на бесплатных курсах (кстати, от некоторых, от кого я совсем не ожидал обратной связи, так как фактически бросил посередине :( - тем не менее получил замечательные письма с благодарностью, а вот от других, с кем переписывались очень даже по дружески, вообще не пришло ничего...) - в частности, по базам данных. Лучший выход - купите мою книжку "Delphi 7. Учебный курс", синенькая такая, изд. Питер. Должна быть, в магазинах, недавно третий раз переиздавалась, на Озоне и др. инет-магазинах также есть. В ней все очень подробно разъясняется и по базам данных, курс на ее основе и построен. Кроме того, там ВСЕ компоненты Дельфи 7 рассмотрены, а также создание многоуровневых, веб-, интернет-систем, создание хелпов, локализация приложений и еще много всего другого.

Если интересуют другие основные компьютерные понятия (многие не знают, что такое байт например :) - обязательно купите "Информатику" под ред. Симоновича.

Если у вас есть какие-то вопросы по базовому курсу - почитайте следующие выпуски, где я давал ответы на часто возникавшие вопросы, с вероятностью 90% вы там найдете готовый ответ на свой вопрос.

Сайт Тани временно не работает, но это временноо - сейчас он переносится на новый хостинг. Если вы хотите, чтобы ваши решения были опубликованы - присылайте свои решения Тане! Кроме того, напоминаю, помощь по базовому курсу и Дельфи еще Лена оказывает - l.s70 собака mail.ru .

Кроме того, господин Иван Путеец (фамилия такая :) взялся за выполнение работ по программированию (школьные и институтские задания, курсовые итд). Берет дорого, но делает качественно (проверял лично!). Пишите ему на ivan777 собака bk.ru.


По последнему заданию.

Если не получается все сразу, с перекрестными ссылками, сначала сделайте только один список - сотрудников. В списке показываются фамилии, при выборе строки отображаете все характеристики конкретного человека (номер выбранной строки просто переводите в индекс массива записей - обычно просто единичку добавить к номеру строки :) , так как нумерация строк - с нуля).

Потом научитесь данные этого сотрудника корректировать, потом - удалять и добавлять. Потом второй список отделов добавляете, и уже пытаетесь состыковывать.

Постепенно :)

Но эта программа была бы бессмысленной, если бы не было возможности сохранять массив записей в файл и затем восстанавливать из него. Сделать это, однако, совсем просто.

Мы познакомились с текстовыми файлами, только для работы со строками. Для создания файла, хранящего данные любых типов, используется следующая запись:

var имя-переменной : File of тип-данных ;

Тип-данных - может быть любой тип, размер элемента данных которого известен. Integer, Real или TXomiak например.

var Fi: File of Integer;

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

В типизированном файле должно находиться целое число блоков данных соответствующего типа. То есть если

var Fi: File of Integer;

то в файл, связанный с переменной Fi, можно записать 5, 123 или 100000 значений типа Integer. Но нельзя - три с половиной записи.

Ограничение на длину строк можно обойти, указав максимально возможную длину строки. Это так делается:

String[ 80 ]

80 - это максимальное число символов, которое может быть в нашей переменной этого типа. Если попробуете записать 81 - возникнет ошибка.

То есть мы можем описать такую запись:

   type TXomiak = record
     name: string;
     ves: Integer;
     end;

но декларация

var Fi: File of TXomiak;

приведет к ошибке - мы не можем точно сказать, какой размер элемента данных типа TXomiak (потому что внутри него есть поле типа String, безразмерное). Эта особенность, фактически, проявляется, только если мы пытаемся создать файл записей, в которых есть String-поля.

Вот как можно записать:

   type TXomiak = record
     name: String[80];
     ves: Integer;
     end;

Мы явно указываем максимальную длину строки, поэтому размер данных типа TXomiak становится сразу компилятору известен.

Лучше вот так записывать:

   type String80 = String[80];
   
     TXomiak = record
     name: String80;
     ves: Integer;
     end;

Выделить нашу 80-символьную строку в отдельный тип данных.

В остальном работа с типизированным файлом не отличается от работы с текстовым файлом.

   var xm: array[1..100] of TXomiak;
   var Fi: File of TXomiak;
   ...
   for i := 1 to 100 do
     begin
     xm[i].name := ' хомяк N ' + inttostr(i);
     xm[i].ves := random(50)+1;
     end;

   AssignFile(Fi, 'xomiaki.dat' ); // расширение вы можете придумать
  любое, главное, чтобы не совпадало с уже существующим. Внутри
  этот файл будет хранить двоичные данные, то есть в Блокноте уже не
  просмотреть :) Один из относительно стандартных расширений для
  таких файлов - .dat.

   Rewrite(Fi);
   for i := 1 to 100 do
     write(Fi, xm[i]);

     // здесь важно - для записи в типизированный файл использовать
  не writeln , а write !

   CloseFile(Fi);

Считывание из файла:

   AssignFile(Fi, 'xomiaki.dat' );
   Reset(Fi);
   for i := 1 to 100 do
     read(Fi, xm[i]);
   CloseFile(Fi);

Записи располагаются в файле последовательно, в том порядке, в каком они в него записывались.

Части кода с записью и считыванием полезно оформить как отдельные процедуры, SaveToMyFile, LoadFromMyFile (только названия выбирайте пооригинальнее, у многих стандартных объектов Дельфи есть готовые методы типа SaveToFile). Переменную-файл в них можно декларировать как локальную, а массив сотрудников конечно глобален - в классе формы указываете и его, и процедуры-методы.

Загрузка из файла должна происходить, очевидно, в самом начале старта программы, в событии создания формы. А сохранение (процедуру сохранения) надо вызывать каждый раз, когда внесено какое-либо изменение в массив сотрудников - чтобы всегда сохранялась синхронность между массивом в памяти и файлом на диске, чтобы и там и там всегда были одинаковые данные.

Открытым файл долго держать тоже не надо - открыли, считали/записали и сразу закрыли. Потому что при любом сбое или просто закрытии программы без закрытия файла теоретически возможно, что файл испортится (не физически, а данные в нем потеряются).


(c) 2004-2005 Сергей Бобровский

Школа программирования с нуля
Все предыдущие выпуски базового курса тут:
http://russianenterprisesolutions.com/sbo/

 

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.prognull
Отписаться

В избранное