Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 2 из 2
  1. #1
    Аватар для wotzgdzcvgaukq
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.02.2022
    Сообщений
    2
    Репутация:
    0 ±

    Нужно ли очищать значение переменной?

    Всем привет! К примеру, есть такой код:

    1. // --- Includes ---
    2.  
    3. #include <../include/a_samp.inc>
    4.  
    5. main() {}
    6.  
    7. // --- Database variable ---
    8.  
    9. new DB:database;
    10.  
    11. // --- Enums ---
    12.  
    13. enum players {
    14. name[MAX_PLAYER_NAME + 1]
    15. };
    16.  
    17. new player[MAX_PLAYERS][players];
    18.  
    19. // --- Gamemode publics ---
    20.  
    21. public OnGameModeInit() {
    22. database = db_open(!"database.db");
    23. return 1;
    24. }
    25.  
    26. public OnGameModeExit() {
    27. db_close(database);
    28. return 1;
    29. }
    30.  
    31. // --- Player publics ---
    32.  
    33. public OnPlayerConnect(playerid) {
    34. player[playerid][name][0] = 0;
    35.  
    36. GetPlayerName(playerid, player[playerid][name], MAX_PLAYER_NAME + 1)
    37.  
    38. //
    39.  
    40. new registrationCheck_query[51 - 2 + 1 + MAX_PLAYER_NAME + 1], DBResult:registrationCheck_resultQuery;
    41. format(registrationCheck_query, sizeof(registrationCheck_query), "SELECT * FROM `players` WHERE `name` = '%s' LIMIT 1", player[playerid][name]);
    42. registrationCheck_resultQuery = db_query(database, registrationCheck_query);
    43.  
    44. if(db_num_rows(registrationCheck_resultQuery))
    45. // Код с авторизацией
    46. else
    47. // Код с регистрацией
    48.  
    49. // db_free_result(registrationCheck_resultQuery);
    50. return 1;
    51. }


    Так вот, нужно ли в конце условного ветвления выполнять функцию db_free_result для очистки значения переменной с результатом запроса или можно опустить этот момент? Ещё такой вопрос: лучше создать глобальную переменную, к которой я буду обращаться, если мне нужно будет работать с данными из запроса, или каждый раз создавать новую?

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от wotzgdzcvgaukq Посмотреть сообщение
    нужно ли в конце условного ветвления выполнять функцию db_free_result для очистки значения переменной с результатом запроса
    Да. Всякий раз, когда запрос вернул данные, их нужно удалять после обработки. Конкретно в твоём примере db_free_result должна вызываться не после ветвления, а в том условии, которое срабатывает, если запрос вернул данные о аккаунте.


    Цитата Сообщение от wotzgdzcvgaukq Посмотреть сообщение
    лучше создать глобальную переменную, к которой я буду обращаться, если мне нужно будет работать с данными из запроса, или каждый раз создавать новую?
    Каждый раз новую. И код читабельнее будет, и компилятор сможет контролировать твой код, предостерегая тебя, например, от случайного дублирования или неправильного использования переменной. Везде, где можно обойтись локальной переменной, нужно обходиться локальной переменной.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    wotzgdzcvgaukq (16.02.2022)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •