Error reading combobox1

ok I got this code for  online but it is not working...
  • Remove From My Forums
  • Question

  • ok I got this code for  online but it is not working…

    and I really think is should

    I don’t see why not

    this is the errors I am getting

    Error    1    An object reference is required for the non-static field, method, or property ‘HeartPulse.Form1.comboBox1’    C:Documents and SettingsBrandonMy DocumentsVisual Studio 2008ProjectsHeartPulseHeartPulseForm1.cs  
     303    17    HeartPulse
    Error    2    An object reference is required for the non-static field, method, or property ‘HeartPulse.Form1.comboBox1’    C:Documents and SettingsBrandonMy DocumentsVisual Studio 2008ProjectsHeartPulseHeartPulseForm1.cs   
    304    17    HeartPulse
    Error    3    An object reference is required for the non-static field, method, or property ‘System.IO.Ports.SerialPort.PortName.get’    C:Documents and SettingsBrandonMy DocumentsVisual Studio 2008ProjectsHeartPulseHeartPulseForm1.cs   
    304    34    HeartPulse
    Error    4    An object reference is required for the non-static field, method, or property ‘System.IO.Ports.SerialPort.DataReceived’    C:Documents and SettingsBrandonMy DocumentsVisual Studio 2008ProjectsHeartPulseHeartPulseForm1.cs   
    305    17    HeartPulse
    Error    5    The name ‘serialPort_DataReceived’ does not exist in the current context    C:Documents and SettingsBrandonMy DocumentsVisual Studio 2008ProjectsHeartPulseHeartPulseForm1.cs   
    305    79    HeartPulse

    this is the code

     public static string SetPortName(string defaultPortName)
            {
                string portName;

                //Console.WriteLine(«Available Ports:»);
                foreach (string s in SerialPort.GetPortNames())
                {
                    comboBox1.Items.Add(s);
                    comboBox1.Text = SerialPort.PortName;
                    SerialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
                }

                Console.Write(«COM port({0}): «, defaultPortName);
                portName = Console.ReadLine();

                if (portName == «»)
                {
                    portName = defaultPortName;
                }
                return portName;
            }

Answers

  • First of, the method is static so you can’t use any object that depend on an instance (static methods are called without creating a instance of the class they belong such as Array.Sort) Also it seems that serialPort_DataReceived is out of scope.  I
    assume you know how to subscribe to an event but perhaps its because its static as well (haven’t tried to do this in a static member, you should check the constrains for it before using it).

    PS:  Beware of simply copy&paste code from others sources, almost always you should tweak them so you can adapt it for your needs.

    Hope this help

    • Marked as answer by

      Tuesday, June 1, 2010 12:47 AM

  • This line:

     SerialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);

    Is expecting that there is a DataReceived event associated with the class defined by the SerialPort instance. The += is associating a method to call when that event occurs.

    Hope this clarifies things.


    www.insteptech.com ;
    msmvps.com/blogs/deborahk
    We are volunteers and ask only that if we are able to help you, that you mark our reply as your answer. THANKS!

    • Marked as answer by
      Harry Zhu
      Tuesday, June 1, 2010 12:47 AM

  • Well as I said, in the code I see that you correctly populate comboBox2 and then ask for comboBox1.Text.  Did you mean  _serialPort.PortName = comboBox2.Text;?

    As for the error perhaps another process is accesing the device, check it.

    Hope this help

    • Marked as answer by
      Harry Zhu
      Tuesday, June 1, 2010 12:48 AM

    • Marked as answer by
      Harry Zhu
      Tuesday, June 1, 2010 12:48 AM


Форум программистов Vingrad

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

Страницы: (2) Все [1] 2 
( Перейти к первому непрочитанному сообщению )

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> A call to an OS function failed, Что за сообщение? 

:(

   

Опции темы

ilya198293
Дата 30.5.2007, 08:58 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 170
Регистрация: 17.3.2007
Где: Сириус, созвездие Большого Пса

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

В моём приложении несколько форм:
из формы 1 вызываю форму 2:

Код

Application.CreateForm(TForm2, Form2);
Form2.Show;

при закрытии формы 2 стоит обработчик событий:

Код

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Form2.Free;
end;

без такого обработчика форма не закрывается, а просто становится невидимой.
последовательность открытия и закрытия делаю 24 раза и на 25 выходит сообщение «Error reading ComboBox1.Items.Strings: A call to an OS function failed.»
Причём первых 24 раза обрабатывается всё нормально. Результат работы формы 2 зависит от настроек формы 1. При разных настройках всё тоже работает, но до 25 раза.
Что это значит и как это победить?

———————

Недавно пытался объяснить сыну, кто такой модератор. Сошлись на Мойдодыре.

PM MAIL   Вверх
ama_kid
Дата 30.5.2007, 09:21 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

АСУТП-кодер
***

Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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

Цитата(ilya198293 @  30.5.2007,  08:58 Найти цитируемый пост)
Что это значит и как это победить?

Это значит, что у тебя идет неправильная работа с памятью… Я с такой проблемой не сталкивался, ибо таким варварским способом не освобождал форму, навскидку вижу проблему в том, что у тебя из обработчика формы непосредственно идет вызов деструктора. А ведь сказано в хелпе:

Цитата
Warning:    Never explicitly free a component within one of its own event handlers or the event handler of a component it owns or contains.

Код
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Form2.Free;
end;

Как думаешь, для чего придуман параметр Action:TCloseAction? Если ты сделаешь

Код
Actio:=caFree;

ты достигнешь того же самого результата, но вполне разрешенным способом… 

———————

самурай без меча подобен самураю с мечом, но только без меча 

PM MAIL   Вверх
MetalFan
Дата 30.5.2007, 09:27 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Аццкий Сотона
****

Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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

так же добавлю, что нельзя убивать форму методом Free в обработчиках событий, описанных в ней же…  для этого необходимо использовать метод Release.
ну это так, на всякий случай для общего развития. в приведенном случае правильно делать так, как сказал ama_kid.

Это сообщение отредактировал(а) MetalFan — 30.5.2007, 09:28

———————

There are always someone smarter than you…

PM MAIL   Вверх
ilya198293
Дата 30.5.2007, 10:49 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 170
Регистрация: 17.3.2007
Где: Сириус, созвездие Большого Пса

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

Теперь ещё несколько моментов, которые возможно помогут прояснить ситуацию.
В обработчике событий TForm1.FormCreate стоит запуск формы 8, в которой в два потока производится SQL запрос и прогон ProgressBar(зависит от времени — 20 сек — типа «подготовка к работе»). при завершении ProgressBar вызываю Form8.Close. При этом возвращаюсь в форму 1 и сразу делаю Form8.Free. В этом месте пробовал ставить обработчик TForm8.FormClose с текстом Action:=caFree, но тогда форма 8 закрывается (не знаю закрывается или просто становится невидимой), а форма 1 не визуализируется, а в диспетчере задач приложение остаётся (ресурсы при этом не жрёт).Так что пока оставил Form8.Free в тексте процедуры TForm1.FormCreate.
Далее настройка всего в форме 1 и потом пошёл каскад открываний и закрываний формы 2. Поменял в TForm2.FormClose Form2.Free на Action:=caFree получил как и посоветовали — эквивалент Free (по крайней мере пока работает так как надо).
Но ошибка осталась всё равно.
По идее 24 раза она же почему-то отработала.

———————

Недавно пытался объяснить сыну, кто такой модератор. Сошлись на Мойдодыре.

PM MAIL   Вверх
ama_kid
Дата 30.5.2007, 11:25 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

АСУТП-кодер
***

Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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

какой ужас…  smile

Цитата(ilya198293 @  30.5.2007,  10:49 Найти цитируемый пост)
Теперь ещё несколько моментов, которые возможно помогут прояснить ситуацию.

Лично для меня все еще более запуталось…  Лучше бы код привел или тестовый проект выложил…  smile

Цитата(ilya198293 @  30.5.2007,  10:49 Найти цитируемый пост)
По идее 24 раза она же почему-то отработала.

Пока система имеет возможность выделять тебе дополнительную память — все работает… Проверь утечки памяти хотя бы через диспетчер задач (а по хорошему — надо через модуль MemCheck)…

P.S. Вообще, плохая практика в обработчике OnCreate одной формы создавать другую… Не будет ли правильнее создавать необходимую тебе Form8 перед созданием Form1?

———————

самурай без меча подобен самураю с мечом, но только без меча 

PM MAIL   Вверх
Rennigth
Дата 30.5.2007, 11:27 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Эксперт
***

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

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

Ну так Action := caFree и вызывает в итоге Releasesmile

Код

procedure TCustomForm.Close;
var
  CloseAction: TCloseAction;
begin
  if fsModal in FFormState then
    ModalResult := mrCancel
  else
    if CloseQuery then
    begin
      if FormStyle = fsMDIChild then
        if biMinimize in BorderIcons then
          CloseAction := caMinimize else
          CloseAction := caNone
      else
        CloseAction := caHide;
      DoClose(CloseAction);
      if CloseAction <> caNone then
        if Application.MainForm = Self then Application.Terminate
        else if CloseAction = caHide then Hide
        else if CloseAction = caMinimize then WindowState := wsMinimized
        else Release;
    end;
end;

———————

(* Honesta mors turpi vita potior *)

PM MAIL ICQ   Вверх
ilya198293
Дата 31.5.2007, 07:56 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 170
Регистрация: 17.3.2007
Где: Сириус, созвездие Большого Пса

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

Попробовал найти ошибки в программе просто создав новый проект и постепенно перенося процедуры из старого проекта…так столько ошибок повылезало…причём не могу понять как они в старом проекте проходили…например брал дату и конвертировал в строку в формате ‘dd/mm/yy’. потом при раскладке считывал символы 1+2,4+5,7+8+9+10 и он считывал. в новом проекте даёт ошибку, причём логичную ошибку…ещё в нескольких местах такая же ерунда…когда считывалось из стринга больше символов чем там есть вообще…так что там нужно весь проект пересматривать…
я по крайней мере грешу на установку всех сервиспаков и апдейтов…без них как-то логичнее всё работало, хотя и вылетали ошибки — ошибки у самого делфи, но не у разрабатываемого проекта.

———————

Недавно пытался объяснить сыну, кто такой модератор. Сошлись на Мойдодыре.

PM MAIL   Вверх
ilya198293
Дата 31.5.2007, 09:38 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 170
Регистрация: 17.3.2007
Где: Сириус, созвездие Большого Пса

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

Сейчас просто эксперементировал с двумя формами и получил такие результаты:
Form1
Здесь форма создаётся как модальная, а в проекте нет, но сути это не меняет

Код

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private{Private declarations}
  public{Public declarations}
  end;
var
  Form1: TForm1;
implementation
uses Unit2;{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  try Form2.Visible:=true                                       //проверка на то существует форма или нет
    except
      on EAccessViolation
      do begin
        Application.CreateForm(TForm2, Form2);
        Form2.ShowModal;
        Form2.Free;
      end;
  end;
end;
end.

Forma2

Код

unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private{Private declarations}
  public{Public declarations}
  end;
var
  Form2: TForm2;
implementation
uses Unit1;{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
  Form2.Close;
end;
end.

Ошибка появляется когда вводится проверка try в форме1. 
как ещё можно проверить существование формы (видимой и не видимой) для того, чтоб не запускать их несколько штук?

———————

Недавно пытался объяснить сыну, кто такой модератор. Сошлись на Мойдодыре.

PM MAIL   Вверх
ama_kid
Дата 31.5.2007, 10:43 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

АСУТП-кодер
***

Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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

Мысли проще:

Код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 try
  Form2.ShowModal;
 except
  Form2:=TForm2.Create(Self);
  Form2.ShowModal;
 end;
 Form2:=nil;
end;

end.

Код
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action:=caFree;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
 Close;
end;

end.

Естессно, вторую форму желательно убрать из списка автосоздаваемых…

———————

самурай без меча подобен самураю с мечом, но только без меча 

PM MAIL   Вверх
ilya198293
Дата 31.5.2007, 11:02 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 170
Регистрация: 17.3.2007
Где: Сириус, созвездие Большого Пса

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

Форма 2 из автосоздания убрана была.
Когда проверка такая:

Код

 try
  Form2.ShowModal;
 except
  Form2:=TForm2.Create(Self);
  Form2.ShowModal;
 end;
 Form2:=nil;
end;

то второй раз нажать на кнопку на форме 1 не предоставляется возможным до тех пор пока она не закрыта…в этом случае try можно и не ставить, просто написать Action:=caFree; и всё.
но в случае когда форма не модальная, тогда при нажатии плодятся новые формы…суть то всей задачи запретить открывать несколько вторых форм, но при этом иметь доступ к форме 1, из неё могут запускаться другие формы с такими же проверками.

———————

Недавно пытался объяснить сыну, кто такой модератор. Сошлись на Мойдодыре.

PM MAIL   Вверх
MetalFan
Дата 31.5.2007, 11:20 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Аццкий Сотона
****

Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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

Цитата(ilya198293 @  31.5.2007,  11:02 Найти цитируемый пост)
 try
  Form2.ShowModal;
 except
  Form2:=TForm2.Create(Self);
  Form2.ShowModal;
 end;
 Form2:=nil;
end;

руцки бы паатрыфалл за такое….
типа: ….»АГА!» сказали сибирские мужыки и пашли пилить дальше двуручной пилой

———————

There are always someone smarter than you…

PM MAIL   Вверх
ama_kid
Дата 31.5.2007, 11:47 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

АСУТП-кодер
***

Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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

MetalFan
Что конкретно не нравится?  smile Уже лет пять пользуюсь таким способом и ни разу еще на грабли не наткнулся… В чём пила? Знаю тебя по форуму как человека, не бросающимся такими заявлениями беспочвенно, поэтому вдруг взял страх за свои проекты smile

Цитата(ilya198293 @  31.5.2007,  11:02 Найти цитируемый пост)
суть то всей задачи запретить открывать несколько вторых форм, но при этом иметь доступ к форме 1, из неё могут запускаться другие формы с такими же проверками.

Выстави просто флаг какой-нибудь при создании второй формы и сбрасывай при закрытии, а перед созданием — проверяй его. Или юзай мьютексы…

———————

самурай без меча подобен самураю с мечом, но только без меча 

PM MAIL   Вверх
ilya198293
Дата 31.5.2007, 12:01 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 170
Регистрация: 17.3.2007
Где: Сириус, созвездие Большого Пса

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

О-о-о-о-о-о-о-о, а флаг это идея…как я сам не догадался…тармажу…спасибоsmile

———————

Недавно пытался объяснить сыну, кто такой модератор. Сошлись на Мойдодыре.

PM MAIL   Вверх
aktuba
Дата 31.5.2007, 12:12 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Смышленный
***

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

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

Цитата

Код

 try
  Form2.ShowModal;
 except
  Form2:=TForm2.Create(Self);
  Form2.ShowModal;
 end;
 Form2:=nil;
end;

ЖЭСТЬ!!! Куда мир катиться…

———————

user posted image

PM MAIL WWW Skype   Вверх
MetalFan
Дата 31.5.2007, 12:17 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Аццкий Сотона
****

Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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

ama_kid, зачем доводить до того, что может возникнуть исключение? да еще и скорее всего AV. если можно обойтись, как ты сам и сказал, проверкой и установкой флага…
нет, конечно бывают моменты, когда исключения используются для уведомления… например в тех же индейцах это сплошь и рядом…
но когда таким образом осуществляется проверка на «живость» объекта… брр..

———————

There are always someone smarter than you…

PM MAIL   Вверх



















Страницы: (2) Все [1] 2 

Ответ в темуСоздание новой темы
Создание опроса
Правила форума «Delphi: Общие вопросы»
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

 

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

When I acces Form controls within BackgroundWorker DoWork event, it reads values from DatePicker but not from TextBox or ComboBox

Error:

Cross-thread operation not valid: Control 'cmbProgram' accessed from a thread other than the thread it was created on.

enter image description here

Code :

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        string strDate = dtpDate.Value.ToString();

        string strProgram = cmbProgram.Text;

    }

How does it read values from DataPicker (in a different thread)?

Is there any workaround to access Form Controls from BackgroundWorker DoWork Event?

asked May 4, 2012 at 9:42

Nalaka526's user avatar

Use:

Dispatcher.Invoke(new Action(() =>
           {
                string strDate = dtpDate.Value.ToString();
                string strProgram = cmbProgram.Text;

           }));

answered May 4, 2012 at 9:53

jrb's user avatar

jrbjrb

1,7082 gold badges13 silver badges20 bronze badges

You cannot access a control from a different thred.
The usual way of getting around that problem is to read the current value from the UI thread, and then pass the value to the second thread (or BackgroundWorker).

You can disable the check by setting CheckForIllegalCrossThreadCalls on the control class to false, but be advised you don’t want to do this.

answered May 4, 2012 at 9:49

Martin Moser's user avatar

Martin MoserMartin Moser

6,1591 gold badge26 silver badges39 bronze badges

You can pass it as an argument. For example:

backgroundworker1.RunWorkerAsync(comboBox1.SelectedItem.ToString());

And grab the contents in the doWork with

string Item = e.Argument.ToString();

answered May 4, 2012 at 9:53

Devator's user avatar

DevatorDevator

3,5384 gold badges32 silver badges52 bronze badges

 

kacagevici

Пользователь

Сообщений: 70
Регистрация: 01.01.1970

Уважаемые гуру при нажатии клавиш del,backspace,escape(чтобы очистить форму) combo box активен выдает ошибку следующего типа:  
run-time error ‘381’: Could not get the List property.Invalid property array index.  

  Вот код из user form:  

  Option Explicit  
Private Sub Combobox1_Change()  
Dim iSotrud As String  
   iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex)  
    If ActiveSheet.AutoFilterMode Then  
   Range(«b1»).AutoFilter Field:=2, Criteria1:=iSotrud  
   End If  
   UserForm2.StartUpPosition = 2  
End Sub  
Private Sub CommandButton1_Click()  
Selection.AutoFilter Field:=2  
End Sub  
Private Sub UserForm_Initialize()  
   Dim AllCells As Range, Cell As Range  
   Dim NoDupes As New Collection  
   Dim i As Integer, j As Integer  
   Dim Swap1, Swap2, Item  
   Set AllCells = Range(«b2:b» & Cells(Rows.Count, 2).End(xlUp).Row)  
   On Error Resume Next  
   For Each Cell In AllCells  
       NoDupes.Add Cell.Value, CStr(Cell.Value)  
   Next Cell  
   On Error GoTo 0  
   For i = 1 To NoDupes.Count — 1  
       For j = i + 1 To NoDupes.Count  
           If NoDupes(i) > NoDupes(j) Then  
               Swap1 = NoDupes(i)  
               Swap2 = NoDupes(j)  
               NoDupes.Add Swap1, before:=j  
               NoDupes.Add Swap2, before:=i  
               NoDupes.Remove i + 1  
               NoDupes.Remove j + 1  
           End If  
       Next j  
   Next i  
   For Each Item In NoDupes  
       UserForm2.ComboBox1.AddItem Item  
   Next Item  
End Sub  

  почему не получается очистить форму ?  
где ошибка?

 

The_Prist

Пользователь

Сообщений: 13997
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

На этой строке?  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex)  

  Может потому, что при пустом значении ListIndex = -1 и это стоит отслеживать?  
If Me.ComboBox1 = «» then exit sub

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

kacagevici

Пользователь

Сообщений: 70
Регистрация: 01.01.1970

да на строке  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex)

 

The_Prist

Пользователь

Сообщений: 13997
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

{quote}{login=kacagevici}{date=07.10.2010 03:27}{thema=}{post}да на строке  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex){/post}{/quote}И? Я ж написал, что сделать.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

kacagevici

Пользователь

Сообщений: 70
Регистрация: 01.01.1970

{quote}{login=The_Prist}{date=07.10.2010 03:29}{thema=Re: }{post}{quote}{login=kacagevici}{date=07.10.2010 03:27}{thema=}{post}да на строке  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex){/post}{/quote}И? Я ж написал, что сделать.{/post}{/quote}  

  Option Explicit  
Private Sub Combobox1_Change()  
Dim iSotrud As String  
   iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex = -1)  
    If ActiveSheet.AutoFilterMode Then  
   Range(«b1»).AutoFilter Field:=2, Criteria1:=iSotrud  
   End If  
   UserForm2.StartUpPosition = 2  
End Sub  
Private Sub CommandButton1_Click()  
Selection.AutoFilter Field:=2  
End Sub  
Private Sub UserForm_Initialize()  
   Dim AllCells As Range, Cell As Range  
   Dim NoDupes As New Collection  
   Dim i As Integer, j As Integer  
   Dim Swap1, Swap2, Item  
   Set AllCells = Range(«b2:b» & Cells(Rows.Count, 2).End(xlUp).Row)  
   On Error Resume Next  
   For Each Cell In AllCells  
       NoDupes.Add Cell.Value, CStr(Cell.Value)  
   Next Cell  
   On Error GoTo 0  
   For i = 1 To NoDupes.Count — 1  
       For j = i + 1 To NoDupes.Count  
           If NoDupes(i) > NoDupes(j) Then  
               Swap1 = NoDupes(i)  
               Swap2 = NoDupes(j)  
               NoDupes.Add Swap1, before:=j  
               NoDupes.Add Swap2, before:=i  
               NoDupes.Remove i + 1  
               NoDupes.Remove j + 1  
           End If  
       Next j  
   Next i  
   For Each Item In NoDupes  
       UserForm2.ComboBox1.AddItem Item  
   Next Item  
End Sub  

    -1 я поставил а остальное подскажи пожалуйста в какую строку ).

 

The_Prist

Пользователь

Сообщений: 13997
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Вот же блин…не так Вы все поняли. На фиг не надо -1.  

  Private Sub Combobox1_Change()  
If Me.ComboBox1 = «» then exit sub  
Dim iSotrud As String  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex)

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

kacagevici

Пользователь

Сообщений: 70
Регистрация: 01.01.1970

{quote}{login=The_Prist}{date=07.10.2010 03:42}{thema=}{post}Вот же блин…не так Вы все поняли. На фиг не надо -1.  

  Private Sub Combobox1_Change()  
If Me.ComboBox1 = «» then exit sub  
Dim iSotrud As String  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex){/post}{/quote}  
думаю быстрее будет только с файлом )))  
а то выдает только ошибки.

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

Попробуйте такой вариант для ComboBox1_Change:  

  Private Sub ComboBox1_Change()  
 On Error Resume Next  
 Dim s As String  
 s = ComboBox1.Value  
 With ActiveSheet  
   If .AutoFilterMode Then  
     If Len(s) = 0 Then  
       .ShowAllData  
     Else  
       .AutoFilter.Range.AutoFilter 2, s  
     End If  
   End If  
 End With  
 ‘UserForm2.StartUpPosition = 2  
End Sub

 

kacagevici

Пользователь

Сообщений: 70
Регистрация: 01.01.1970

#9

08.10.2010 10:02:41

{quote}{login=ZVI}{date=08.10.2010 05:17}{thema=}{post}Попробуйте такой вариант для ComboBox1_Change:  

  Private Sub ComboBox1_Change()  
 On Error Resume Next  
 Dim s As String  
 s = ComboBox1.Value  
 With ActiveSheet  
   If .AutoFilterMode Then  
     If Len(s) = 0 Then  
       .ShowAllData  
     Else  
       .AutoFilter.Range.AutoFilter 2, s  
     End If  
   End If  
 End With  
 ‘UserForm2.StartUpPosition = 2  
End Sub{/post}{/quote}  

    то что надо! спасибо огромное!


SCR проблемы файла ComboBox1b.scr в большинстве случаев связаны с повреждением, отсутствием или заражением файлов Code Warrior. В большинстве случаев скачивание и замена файла SCR позволяет решить проблему. В некоторых случаях реестр Windows пытается загрузить файл ComboBox1b.scr, который больше не существует; в таких ситуациях рекомендуется запустить сканирование реестра, чтобы исправить любые недопустимые ссылки на пути к файлам.

Если вам нужно заменить файл ComboBox1b.scr, вы можете найти версию %%os%% в нашей базе данных, перечисленной в таблице ниже. К сожалению, в настоящее время в нашей базе могут отсутствовать некоторые версии файлов ComboBox1b.scr, но их можно запросить, нажав на кнопку Request (Запрос). В редких случаях, если вы не можете найти версию необходимого вам файла ниже, мы рекомендуем вам обратиться за дополнительной помощью к Metrowerks.

Как правило, ошибки подобного типа больше не возникают после размещения надлежащей версии файла ComboBox1b.scr в соответствующем месте, однако вам следует выполнить проверку ещё раз. Повторно запустите Code Warrior, чтобы убедиться в успешном решении проблемы.

ComboBox1b.scr Описание файла
Тип: SCR
Категория: Programming
App: Code Warrior
Версия: 6.0
Разработчик: Metrowerks
 
Имя файла: ComboBox1b.scr  

Размер: 2873
SHA-1: db5ee490e9fc1a652f7c5f9f65b355a2c559957f
MD5: ef55bd7b792b1d954275d1415113002c
CRC32: aa166c4b

Продукт Solvusoft

Загрузка
WinThruster 2023 — Сканировать ваш компьютер на наличие ошибок реестра в ComboBox1b.scr

Windows
11/10/8/7/Vista/XP

Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

SCR
ComboBox1b.scr

Идентификатор статьи:   449021

ComboBox1b.scr

Имя файла ID Размер файла Загрузить
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App Code Warrior 6.0
Программист Metrowerks
Версия ОС Linux
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App Slackware Linux 7.1
Программист Slackware Linux Inc.
Версия ОС Linux
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App Slackware Linux 7.1
Программист Slackware Linux Inc.
Версия ОС MSDOS
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App Slackware Linux 7.1
Программист Slackware Linux Inc.
Версия ОС Windows 10
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
Расположение файла C:WindowsSystem32
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App SuSE Linux 7.2 Professional 7.2
Программист SuSE Inc.
Версия ОС SuSE Linux 7.2
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App Red Hat Linux 9
Программист Red Hat Software Inc.
Версия ОС Red Hat Linux 9
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App Red Hat Linux 9 9
Программист Red Hat Software Inc.
Версия ОС Red Hat Linux
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App Red Hat Linux 9 2003
Программист Red Hat Software Inc.
Версия ОС Red Hat Linux 9
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
+ ComboBox1b.scr 524e4c03f736d89df48081d7e2c08c4e 2.00 KB
App SUSE Linux Enterprise Server 12 dl.Aug.30, 2017
Программист SuSE Inc.
Версия ОС SUSE Linux Enterprise Server
Тип 64-разрядная (x64)
Байт 2053
Контрольная сумма MD5 524e4c03f736d89df48081d7e2c08c4e
Контрольная сумма SHA1 42c02d07e7946a1a91dadfe7b924c8aa37908949
CRC32: 168d0d14
+ ComboBox1b.scr 524e4c03f736d89df48081d7e2c08c4e 2.00 KB
App SUSE Linux Enterprise Server 12 dl.Aug.30, 2017
Программист SuSE Inc.
Версия ОС Linux x64
Тип 64-разрядная (x64)
Байт 2053
Контрольная сумма MD5 524e4c03f736d89df48081d7e2c08c4e
Контрольная сумма SHA1 42c02d07e7946a1a91dadfe7b924c8aa37908949
CRC32: 168d0d14
+ ComboBox1b.scr 524e4c03f736d89df48081d7e2c08c4e 2.00 KB
App SUSE Linux Enterprise Server 12 dl.Aug.30, 2017
Программист SuSE Inc.
Версия ОС SuSE Linux
Тип 64-разрядная (x64)
Байт 2053
Контрольная сумма MD5 524e4c03f736d89df48081d7e2c08c4e
Контрольная сумма SHA1 42c02d07e7946a1a91dadfe7b924c8aa37908949
CRC32: 168d0d14
+ ComboBox1b.scr 524e4c03f736d89df48081d7e2c08c4e 2.00 KB
App SUSE Linux Enterprise Server 12 dl.Aug.30, 2017
Программист SuSE Inc.
Версия ОС Linux
Тип 64-разрядная (x64)
Байт 2053
Контрольная сумма MD5 524e4c03f736d89df48081d7e2c08c4e
Контрольная сумма SHA1 42c02d07e7946a1a91dadfe7b924c8aa37908949
CRC32: 168d0d14
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App Red Hat Enterprise Linux 4
Программист Red Hat Software Inc.
Версия ОС Red Hat Enterprise Linux 4
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App Red Hat Enterprise Linux 4
Программист Red Hat Software Inc.
Версия ОС Red Hat Linux
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App Red Hat Enterprise Linux 4
Программист Red Hat Software Inc.
Версия ОС Linux
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b
+ ComboBox1b.scr 524e4c03f736d89df48081d7e2c08c4e 2.00 KB
App SUSE Manager Server — 2 of 2 3.0
Программист SuSE Inc.
Версия ОС Linux x86
Тип 64-разрядная (x64)
Байт 2053
Контрольная сумма MD5 524e4c03f736d89df48081d7e2c08c4e
Контрольная сумма SHA1 42c02d07e7946a1a91dadfe7b924c8aa37908949
CRC32: 168d0d14
+ ComboBox1b.scr 524e4c03f736d89df48081d7e2c08c4e 2.00 KB
App SUSE Manager Server — 2 of 2 3.0
Программист SuSE Inc.
Версия ОС Linux x64
Тип 64-разрядная (x64)
Байт 2053
Контрольная сумма MD5 524e4c03f736d89df48081d7e2c08c4e
Контрольная сумма SHA1 42c02d07e7946a1a91dadfe7b924c8aa37908949
CRC32: 168d0d14
+ ComboBox1b.scr 524e4c03f736d89df48081d7e2c08c4e 2.00 KB
App SUSE Manager Server — 2 of 2 3.0
Программист SuSE Inc.
Версия ОС SuSE Linux
Тип 64-разрядная (x64)
Байт 2053
Контрольная сумма MD5 524e4c03f736d89df48081d7e2c08c4e
Контрольная сумма SHA1 42c02d07e7946a1a91dadfe7b924c8aa37908949
CRC32: 168d0d14
+ ComboBox1b.scr 524e4c03f736d89df48081d7e2c08c4e 2.00 KB
App SUSE Manager Server — 2 of 2 3.0
Программист SuSE Inc.
Версия ОС Linux
Тип 64-разрядная (x64)
Байт 2053
Контрольная сумма MD5 524e4c03f736d89df48081d7e2c08c4e
Контрольная сумма SHA1 42c02d07e7946a1a91dadfe7b924c8aa37908949
CRC32: 168d0d14
+ ComboBox1b.scr ef55bd7b792b1d954275d1415113002c 2.81 KB
App SUSE Linux Enterprise Server 10 DVD 1 2006
Программист Novell Inc.
Версия ОС SuSE Linux 10.0
Тип 64-разрядная (x64)
Байт 2873
Контрольная сумма MD5 ef55bd7b792b1d954275d1415113002c
Контрольная сумма SHA1 db5ee490e9fc1a652f7c5f9f65b355a2c559957f
CRC32: aa166c4b

Ошибки ComboBox1b.scr

Частичный список ошибок ComboBox1b.scr Code Warrior:

  • «Ошибка в файле ComboBox1b.scr.»
  • «Отсутствует файл ComboBox1b.scr.»
  • «Не удалось найти ComboBox1b.scr. «
  • «Не удалось загрузить модуль для ComboBox1b.scr. «
  • «Не удалось зарегистрироваться: ComboBox1b.scr. «
  • «Ошибка времени выполнения Code Warrior: ComboBox1b.scr»
  • «Файл ComboBox1b.scr не может быть загружен. «

DEBUG NO TRANSLATION Важно отметить ошибки с ComboBox1b.scr по мере их возникновения, так как это помогает устранять проблемы, связанные с Code Warriors, и сообщать о них в Metrowerks.

ComboBox1b.scr Истоки проблем

Заражение вредоносными программами, недопустимые записи реестра Code Warrior или отсутствующие или поврежденные файлы ComboBox1b.scr могут создать эти ошибки ComboBox1b.scr.

В основном, осложнения ComboBox1b.scr из-за:

  • Недопустимая (поврежденная) запись реестра ComboBox1b.scr.
  • Вирус или вредоносное ПО поврежден ComboBox1b.scr.
  • Другая программа злонамеренно или по ошибке удалила файлы, связанные с ComboBox1b.scr.
  • ComboBox1b.scr конфликтует с другой программой (общим файлом).
  • Неполный или поврежденный ComboBox1b.scr из ошибочной загрузки или установки.

Понравилась статья? Поделить с друзьями:
  • Error reading boot sector victoria
  • Error reading bios date from registry
  • Error read only file system ubuntu
  • Error read only file system during write on dev disks
  • Error read econnreset node js