передача парметра в поток

Тема в разделе "WASM.WIN32", создана пользователем seiko, 18 дек 2007.

  1. seiko

    seiko New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    98
    Суть в чём, пишу прогу - музыкальный редактор музыки на бипере, хочу, чтобы были кнопки Play Pause и Stop, поэтому создаю поток с процедуры проигрывания, находящейся в модуле, она принимает строку, по содержанию что-то вроде нот как в ранних прогах на сотовых, причем не внутри потока все работает нормально, пытался передавать как параметр просто указатель на строку, но проигрывалась или белеберда или ниче не проигрывалось,
    пробовал переделать процедуру и сделать входным параметром указатель, а уже в самой процедуре преобразовывать его в стоку, но опять ноль результата. Процедуру не перегружал, а дал им разные названия: той, что по указателю и оригиналу
    Поэтому возникает вопрос: в чем может быть проблема?

    P.S. поток создаю ф-ей beginthread из SysUtils а не createthread из Windows
     
  2. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    seiko
    а указатель передаёшь случаем не на стек процедуры из которой создаёь поток?
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    seiko
    Если это дельфи, то передаваемая строка должна быть глобальной переменной, а не локальной - иначе она "самоуничтожается" при выходе из вызывающей функции
     
  4. seiko

    seiko New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    98
    мда, лоханулся.
    окей, а ей пофигу где объявлена переменная в разделе implementation или interface (закрытая или открытая)?
    еще вопрос, а в сишке разве как-то по-другому?
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    локальные переменные реализованы и в си и в дельфи одинаково - с помощью стека.

    я помню так лоханулся один раз недавно - отправляю из драйвера через NDIS Ethernet/IP/ICMP пакет.
    Ну все чудесно, снифер на тачке отправителя показывает что пакет нормальный и что он ушел. Снифер на тачке назначения показывает что пришел пакет, но вместо данных полный бред - мусор какойто. Минут 20 я втыкал, потом догнал, что пакет отправляется, видимо, асинхронно, а буфер у меня выделялся в стеке... выделил в пуле и все стало нормуль=)
     
  6. seiko

    seiko New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    98
    слушай, если ты в сетях разбираешься помоги в теме NETWORKS>>проблемы в винсоке
    Из-за чего может происходит ошибка WSAETIMEDOUTERROR в TCP, когда клиент подключаеться в нужное время по тому же порту, разумеется на котором сервер, компы объединены в локальную сеть и находятся рядом с друг другом, сам кабель идет от ADSL модема, по которому еще подсоединяется WAN компании-поставщика интернета, причем на обоих компах отключены антивирусы, файерволы и брандмауэры. Может ли причиной являтся сетевая политика компании-поставщика интернета?
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    так я не понял, клиент и сервер в одной локальной сети или все-таки через WAN?
     
  8. seiko

    seiko New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    98
    клиент и сервер - соседние компы понятно дело в локалке
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А каким боком тут тогда политика поставщика интернета?...