Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Изменение параметра по времени  (Прочитано 42691 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #30 : 20-08-2007 15:47 » new

Тамже про BC6 написано:
http://forums.mysql.com/read.php?45,140291,140291#msg-140291
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #31 : 20-08-2007 16:17 » 

Нифига не работает, блин  Жаль весь день бьюсь с этим билдером.

теперь при компилировании следующего кода

Код:
#include <vcl.h>
#include <winsock.h>
#include <mysql/mysql.h>
#pragma hdrstop
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>

char *my_host = "localhost", *my_user = "root",*my_pswd = "", *my_db = "test";

void main()
{

     MYSQL *my_conn = 0;
MYSQL_RES *res;
MYSQL_ROW row;
char * query = "SELECT id, name FROM test";

my_conn = mysql_init(0);

if (mysql_real_connect(my_conn, my_host, my_user, my_pswd, my_db, 0, 0, 0))
cout<<"Nice connect";
        getch();

}

выдаёт окно с Ok,Help.

Debugger Exception Notification

Project Project2.exe raised exception class EAccessViolation with message 'Acess violation at address 10015304. Read of address 0000003A4'. Process stopped. Use Step or Run to continue.

 Жаль
« Последнее редактирование: 20-08-2007 17:34 от FallenSoul » Записан
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #32 : 20-08-2007 20:22 » 

 А черт его знает...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #33 : 20-08-2007 21:04 » 

Скопируй libmysql.dll либо в c:\windows, либо в папку с получаемым екзешником.
(полезно запускать программу вне отладчика Ага )

Я пошел по шагам, как написано в совете на форуме mysql...
Код: (C++)
#include <winsock.h>
#include <mysql.h>
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *my_host = "localhost", *my_user = "root",*my_pswd = "", *my_db = "test";

int main()
{
        MYSQL *my_conn;
        MYSQL_RES *res;
        MYSQL_ROW row;
        char *query = "SELECT id, name FROM test";

        my_conn = mysql_init(0);

        if (!mysql_real_connect(my_conn, my_host, my_user, my_pswd, my_db, 0, 0, 0))
        {
                printf("Error: (%u) %s\n", mysql_errno(my_conn), mysql_error(my_conn));
                exit(1);
        }
    else
        puts("DB connected.");

        if (mysql_real_query(my_conn, query, strlen(query)))
        {
                printf("Error: (%u) %s\n", mysql_errno(my_conn), mysql_error(my_conn));
                exit(1);
        }
    else
        puts("Query accepted.");

        if ((res = mysql_store_result(my_conn)))
        {
                while ((row = mysql_fetch_row(res)))
                {
                        printf("%s\t%s\n", row[0], row[1]);
                }

                mysql_free_result(res);
        }
    else
        puts("No rows fetched.");

        mysql_close(my_conn);

    puts("I wait you...");
    getc(stdin);
        return 0;
}

Результат:
Код:
DB connected.
Query accepted.
1       aaa
222     djhsdjasha
I wait you...
« Последнее редактирование: 20-08-2007 21:14 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #34 : 21-08-2007 06:34 » 

Ты не представляешь как я тебе благодарен ... Огромное спасибо
« Последнее редактирование: 21-08-2007 10:14 от FallenSoul » Записан
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #35 : 21-08-2007 12:50 » 

Код:
            printf("%s%s%s%s\n"," ",row[2],"/",row[3]); 

Можно как-то значение переменной row[2] увеличить на еденицу строкой выше, не вызывая запроса на увеличение соответствующего параметра в базе данных ?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #36 : 21-08-2007 13:58 » 

FallenSoul, ты себе так это представляешь?  Я шокирован! не пугай, пожалуйста...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #37 : 21-08-2007 16:26 » 

Подскажи тогда плз.

Код:
#include <winsock.h>
#include <mysql/mysql.h>
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <dos.h>
#include <time.h>
#include <windows.h>

char *my_host = "localhost", *my_user = "root",*my_pswd = "", *my_db = "players";

int main()
{

   struct  time t;

   gettime(&t);

   MYSQL *my_conn;
   MYSQL_RES *res;
   MYSQL_ROW row;

char *query = "SELECT id, name FROM test";

my_conn = mysql_init(0);

   if (!mysql_real_connect(my_conn, my_host, my_user, my_pswd, my_db, 0, 0, 0))
    {
     printf("Error: (%u) %s\n", mysql_errno(my_conn), mysql_error(my_conn));
     exit(1);
    }
   else
    {
     gettime(&t); // для вывода времени
     printf("%2d:%02d:%02d.%02d\t\n",t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
     puts("DB connected.\n\n");

     query="select * from test where hp < maxhp"; // выбираем персонажа у кот. хп < максимальных
     char*addhp="update test set hp=hp+1 where hp<maxhp"; // увеличиваем текущие хп на еденицу всем у кого они меньше максимальных

     while(!mysql_real_query(my_conn, query, strlen(query))) //пока есть персонажи у кот. хп < максимальных
      {
       res=mysql_store_result(my_conn); // найденные строки присваиваем переменной res
       if(!mysql_real_query(my_conn,addhp,strlen(addhp))) // если увеличили хп всем у кого они меньше максимальных
        {
          while (row=mysql_fetch_row(res)) // вывод всех кого нашли
           {
            gettime(&t); // обновляем время
            printf("%2d:%02d:%02d.%02d\t",t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); //для лога
            printf("%s%s",row[1]," : increase hp by 1."); //для лога
            printf("%s%s%s%s\n"," ",row[2],"/",row[3]); // для лога ввиде ( текущие хп / максимальные хп ) однако здесь выводит значения хп которые были до увеличения.
           }
          sleep(5); // ждём 5 секунд
        }
      }
     mysql_free_result(res);
     mysql_close(my_conn);

     puts("I wait you...");
     getch();
     return 0;
    }
}


Вопрос как сделать так чтоб он выдавал значения после увеличения.
Если поставить запрос после увеличения, то может получится так что хп достигнут максимального значения и тогда уже запрос hp<=maxhp будет не рациональным т.к. кроме тех у кого 5 сек. назад хп были не максимальными еще выведутся и все остальные у кого хп были максимальными.

Поэтому и хотел как-то row[2] увеличивать на еденицу, правда скорее всего там тип строка и это никак рационально реализовать нельзя.
« Последнее редактирование: 21-08-2007 16:28 от FallenSoul » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #38 : 21-08-2007 16:31 » 

Код: (C)
int n;

n = atoi(row[2]) + 1;
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #39 : 21-08-2007 16:40 » 

Через printf почему то выдавал ошибку. Реализовал через :

 
Код:
            k= atoi(row[2]);
            k++;
            gettime(&t);
            printf("%2d:%02d:%02d.%02d\t",t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
            printf("%s%s",row[1]," : increase hp by 1. ");
            cout<<k<<"/"<<row[3]<<"\n";

спасибо.

Результат :

Код:
20:45:39.75
DB connected.


20:45:39.81     xzzz : increase hp by 1. 23/26
20:45:39.81     third : increase hp by 1. 23/34
20:45:44.92     xzzz : increase hp by 1. 24/26
20:45:44.92     third : increase hp by 1. 24/34
20:45:49.98     xzzz : increase hp by 1. 25/26
20:45:49.98     third : increase hp by 1. 25/34
20:45:55.02     xzzz : increase hp by 1. 26/26
20:45:55.02     third : increase hp by 1. 26/34
20:46:00.06     third : increase hp by 1. 27/34
20:46:05.09     third : increase hp by 1. 28/34
20:46:10.19     third : increase hp by 1. 29/34
20:46:15.27     third : increase hp by 1. 30/34
20:46:20.31     third : increase hp by 1. 31/34
20:46:25.36     third : increase hp by 1. 32/34
20:46:30.41     third : increase hp by 1. 33/34
20:46:35.47     third : increase hp by 1. 34/34
« Последнее редактирование: 21-08-2007 16:47 от FallenSoul » Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines