Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не выполняется часть кода, Не выполняется присвоение 
V
    Опции темы
BEST13
Дата 6.11.2011, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго времени суток,
В общем в моем коде,  я что-то  упустил и у меня почему-то переменная всегда равна false, хотя я и вроде пересмотрел... не могу понять в чем дело. Если вкратце, код определяет подключение и отключение флешки на которой есть определенный файл. Но из за того что, код не срабатывает, он выполняет всегда действия при отключении. Потому что,   keyex всегда равна false.  Компилятор выдает такое предупреждение:"[DCC Warning] U_BSF.pas(165): W1036 Variable 'DriveKeyLetter' might not have been initialized". Вот собственно код на который переходит, если кликнуть по предупреждению:  
Код

keyex:=FlashKey(DriveKeyLetter);


Вот весь код:
Код

procedure TForm1.WMDeviceChange(var Msg: TMessage);
var DriveLetter,DriveKeyLetter:char; keyex:Boolean;
begin
 //Провверка на подключение
  if Msg.WParam=DBT_DEVICEARRIVAL then
   if PDEV_BROADCAST_HDR(Msg.LParam)^.dbch_devicetype= DBT_DEVTYP_VOLUME then
     begin
      DriveLetter:=GetFirstDriveLetter(PDevBroadcastVolume(MSg.LParam)^.dbcv_unitmask);
      if FlashKey(DriveLetter) then
        begin
          DriveKeyLetter:=DriveLetter;
          ***
          Memo.Lines.Add('флешку воткнули!');
          Memo.Lines.Add('буква тома: ' +DriveKeyLetter);
        end;
     end;
 // Проверка на отключение
  if Msg.WParam=DBT_DEVICEREMOVECOMPLETE then
   if PDEV_BROADCAST_HDR(Msg.LParam)^.dbch_devicetype= DBT_DEVTYP_VOLUME then
   begin
    keyex:=FlashKey(DriveKeyLetter);// вот этот код не срабатывает
    Memo.Lines.Add(DriveKeyletter);// и вот этот тоже
    if keyex=false then
     begin
       Memo.Lines.Add('флешку высунули!');
       Memo.Lines.Add('keyex=false');// для проверки значения
     ***
      end
     else  Memo.Lines.Add('key= true')//для проверки значения
   end;


Вот сама функция FlashKey:
Код

function TForm1.FlashKey(DriveLetter: char): Boolean;
var F:textfile; buff:string[8];
begin
buff:='';
if FileExists(DriveLetter+':\file.ps') then
  begin
    AssignFile(F,DriveLetter+':\file.ps');
    try
     Reset(F);
     readln(F,buff);
     CloseFile(F);
    Except
    ShowMessage('I/O Error!')
    end;
   if buff='blabla' then
     Result:=true
    else
      Result:=false;
   end
else
Result:=false;
end;

PM MAIL ICQ GTalk   Вверх
CROTishka
Дата 7.11.2011, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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




Модератор: Сообщение скрыто.

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


Бывалый
*


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

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



Вобщем, как я и думал проблема была очень просто и свойственна новичкам.... Локальная переменная DriveKeyLetter не сохраняла значение, потому что она локальная  smile . Моя внимательность, это ужас. Спасибо всем кто заглядывал.  
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


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

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


 




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


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

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