Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Помогите разобраться в програмном коде! 
:(
    Опции темы
Bigreddog
Дата 27.10.2007, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 27.10.2007

Репутация: нет
Всего: нет



Скажите где моя ошибка! Пожалуста!





Код

program Noform;

uses
 Windows, Registry, SysUtils, ShellApi;


{$R *.res}

var
  Regp: TRegistry;
  today: TDateTime
 year, month, day: world;
  F: TextFile; // файл с датами
  F2: TextFile; //Создаваемый файл-поздравление
  s: String; // сюда читаются строки из файла
  sKey: String; // Для работы с реестром
  N; Integer; // для поиска символов в строке
  yearF, monthF, dayF: integer;
  kolvo: Integer; // Номер поздравления за сегодня
  st: String; {рабочая переменная
     для работы с kolvo}
begin
sKey := Software\Microsoft\Windows\CurrentVersion\Run;
kolvo:= 0
// помещаем программу в автозагрузку
Regp := Tregistry.Create;
Regp.RootKey:=HKEY_LOCAL_MACHINE;
Regp.OpenKey(sKey,True);
Regp.WriteString(Noform,paramstr(0));
Regp.Free;
// определяем текущую дату
day := Date;
DecodeDate (today,year,month,day);
// Читаем из файла даты и сравниваем их
assingfile(F,dates.txt)
{$|-}
Reset(F);
{$|+}
// если ошибки открытия файла с датами нет,
// продолжаем работу
if ioresult=0 then
  begin
  while not eof(F) do
    begin
    ReadLn(F,s);
    if s=then continue; // пустая строка, игнорируем
    // преобразовываем дату, записанную в строке,
    // в переменные типа Indeger - dayF, monthF, yearF
    n :=pos(.,s);
    dayF := StrTolnt(copy(s,1,n-1));
    delete(s,1,n);
    n :=pos(.,s);
    monthF := StrTolnt(copy(s,1,n-1));
    delete(s,1,n);
    n :=pos(.,s);
    yearF := StrTolnt(copy(s,1,n-1));
    delete(s,1,n);
    // в s остаётся имя поздравляемого
    // сравниваем, если дата совпадает,
    // то выводим поздравление на экран
    if (year=yearF) and (month=monthF) and
      (day=dayF) then
      // поздравляем
      begin
      // создаем файл
      inc(kolvo);
      st :=out +IntToStr(kolvo) + .html
      AssignFile(F2,st);
      Rewrite(F2);
      WhriteLn(F2,<html>);
      WhriteLn(F2,<head>);
      WhriteLn(F2,<title>Милая Даша! Поздравляю!</title>);
      WhriteLn(F2,</head>);
      WhriteLn(F2,<body bgcolor="#FFFFFF">);
      WhriteLn(F2,<b> + s + </b><br>);
      WhriteLn(F2,Поздравляю тебя с 17 летием! Здоровья, любви, красоты тебе! Твой Александр! Люблю и смачно целую.);
      WhriteLn(F2,</body>);
      WhriteLn(F2,</html>);
      CloseFile(F2)
      // открываем созданный файл
      ShellExecute(0,open,pchar(st),,,SW_SHOW);
      end;
  end;
CloseFile(F)
end
  else
     // если файла с датами нет,
     // удаляем автозагрузку из реестра
     begin
   Regp :=TRegistry.Create;
   Regp.RootKey:=HKEY_LOCAL_MACHINE;
   Regp.OpenKey(sKey,True);
   Regp.DeleteValue(Noform);
   Regp.Free;
   end;
end.




если всё получится то отблагодарю!


M
Guedda
Модератор: Пользуйтесь кнопкой "Код"!


Это сообщение отредактировал(а) Guedda - 2.11.2007, 11:44
PM MAIL   Вверх
Alexeis
Дата 27.10.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
maniaks1
Дата 30.10.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



Неплохо было бы уточнить что именно не работает.

PM MAIL ICQ   Вверх
VICTAR
Дата 31.10.2007, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 2
Всего: 80



Bigreddog, чего у тебя там не работает? 
Попробуй заменить 
Код

assignfile(F, 'dates.txt');

на 
Код

assignfile(F, ExtractFilePath(ParamStr(0))+'dates.txt');

В дирректории с программой должен лежать файл с именем dates.txt.
Примерное содержание файла:
Код

28.10.2007 Мариша

Только число не забудь поменять. 
Если опять не будет работать, то хотя бы напиши ЧТО не работает и приложи файлик dates.txt.


PM MAIL   Вверх
VICTAR
Дата 3.11.2007, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 2
Всего: 80



Так как модератор по ошибке удалил мое сообщение, выкладываю исправленный вариант еще раз.
Код

program Noform;

uses
  Windows,
  Registry,
  SysUtils,
  ShellApi;

var
  Regp: TRegistry;
  today: TDateTime;
  year, month, day: word;
  F: TextFile; // файл с датами
  F2: TextFile; //Создаваемый файл-поздравление
  s: string; // сюда читаются строки из файла
  sKey: string; // Для работы с реестром
  N: Integer; // для поиска символов в строке
  yearF, monthF, dayF: integer;
  kolvo: Integer; // Номер поздравления за сегодня
  st: string; {рабочая переменная  для работы с kolvo}
begin
  sKey := 'Software\Microsoft\Windows\CurrentVersion\Run';
  kolvo := 0;
  // помещаем программу в автозагрузку
  Regp := Tregistry.Create;
  Regp.RootKey := HKEY_LOCAL_MACHINE;
  Regp.OpenKey(sKey, True);
  Regp.WriteString('Noform', paramstr(0));
  Regp.Free;
  // определяем текущую дату
  DecodeDate(Date, year, month, day);
  // Читаем из файла даты и сравниваем их
  assignfile(F, ExtractFilePath(ParamStr(0))+'dates.txt');
{$I-}
  Reset(F);
{$I+}
  // если ошибки открытия файла с датами нет,
  // продолжаем работу
  if ioresult = 0 then
  begin
    while not eof(F) do
    begin
      ReadLn(F, s);
      if s = '' then
        continue; // пустая строка, игнорируем
      // преобразовываем дату, записанную в строке,
      // в переменные типа Indeger - dayF, monthF, yearF

      //пример файла 28.10.2007 Мариша 

      n := pos('.', s);
      dayF := StrToInt(copy(s, 1, n - 1));
      delete(s, 1, n);
      n := pos('.', s);
      monthF := StrToInt(copy(s, 1, n - 1));
      delete(s, 1, n);
      n := pos(' ', s);
      yearF := StrToInt(copy(s, 1, n - 1));
      delete(s, 1, n);
      // в s остаётся имя поздравляемого
      // сравниваем, если дата совпадает,
      // то выводим поздравление на экран
      if (year = yearF) and (month = monthF) and
        (day = dayF) then
        // поздравляем
      begin
        // создаем файл
        inc(kolvo);
        st := 'out' + IntToStr(kolvo) + '.htm';
        AssignFile(F2, st);
        Rewrite(F2);
        Writeln(F2, '<html>');
        Writeln(F2, '<head>');
        Writeln(F2, '<title> Милая Даша! Поздравляю! </title>');
        Writeln(F2, '</head>');
        Writeln(F2, '<body bgcolor = "#FFFFFF">');
        Writeln(F2, '<b>' + s + '</b > <br>');
        Writeln(F2,
          'Поздравляю тебя с 17 летием! Здоровья, любви, красоты тебе! Твой Александр! Люблю и смачно целую.');
        Writeln(F2, '</body>');
        Writeln(F2, '</html>');
        CloseFile(F2);
        // открываем созданный файл
        ShellExecute(0, 'open', pchar(st), nil, nil, SW_SHOW);
      end;
    end;
    CloseFile(F)
  end
  else
    // если файла с датами нет,
    // удаляем автозагрузку из реестра
  begin
    Regp := TRegistry.Create;
    Regp.RootKey := HKEY_LOCAL_MACHINE;
    Regp.OpenKey(sKey, True);
    Regp.DeleteValue('Noform');
    Regp.Free;
  end;
end.

PM MAIL   Вверх
Rodman
Дата 3.11.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122




M
Rodman
Модератор: Название темы должно отражать ее суть!

PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.