Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: FireZone
Дата сообщения: 15.08.2006 10:08
vshersh, RedLord
Спасибо за информацию. Когда написал вопрос, сам подумал о вспомогательном классе. Ещё такой вопрос. Есть ли в C++ аналог сишного realloc()?
Автор: RedLord
Дата сообщения: 15.08.2006 11:46
FireZone
нет.
вроде бы рассматривался в комитете по стандарту вариант добавления в аллокатор STL такой возможности. что вышло - не знаю.

в любом случае, если есть необходимость в спец. работе с памятью путь один - написание своего аллокатора (см. boost, Loki)
Автор: pit23
Дата сообщения: 15.08.2006 13:49
Здравствуйте. У меня возникл вопрос: как перенести программу на другой компьютер
(WinXP Home), написанное в Visual C++ 2005. Не пойму в чем причина: при запуске экзешника все время выпадает ошибка: Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему.
Попробывал написать простейшую программу: создание одного окна, но все равно при попытке запуска этой программы на другом компьютере появляется эта ошибка.

PS. Программу писал на Win32 Api.

Автор: RedLord
Дата сообщения: 15.08.2006 14:23
pit23
исходный код в студию
Автор: Collapse Troll
Дата сообщения: 15.08.2006 15:21
Pit23
http://forums.realcoding.net/lofiversion/index.php?t13011.html


Добавлено:
FireZone
если нужен realloc для массива - то можно юзать вектора и resize. строки тоже изменяют размеры
Автор: pit23
Дата сообщения: 16.08.2006 08:47
Collapse Troll

Спасибо за ссылку. Разобрался.
Автор: floodway
Дата сообщения: 21.08.2006 20:43
Всем привет.

Может это покажется смешным (или даже диким), но как можно сделать дефайн в дефайне или даже инклуд в дефайне? Т.е. что-то, наподобие:
#define mydef #define FLAG 0 #include "some.h"

тупость?
Автор: xdude
Дата сообщения: 22.08.2006 01:26
floodway
Это по идее невозможно, хотя, может я отстал от жизни. Да оно и не нужно, в любой ситуации можно обойтись стандартными конструкциями #define, #ifdef, #if и т.д.
Автор: floodway
Дата сообщения: 22.08.2006 02:07
xdude

Цитата:
в любой ситуации можно обойтись стандартными конструкциями #define, #ifdef, #if и т.д.


Та да, но хотелось часто повторяющиеся строки, похожие на мой пример, сделать одним макросом с парочкой аргументов-подстановок. Не судьба(стандарт) видать
Автор: ItsJustMe
Дата сообщения: 22.08.2006 15:00

Цитата:
Может это покажется смешным (или даже диким),

Ты конкретно напиши, что твой define должен выдавать.
Но учти, define не может выдавать выражения, содержащие #.

Можно, к примеру, сделать так:

#define DTEST "stdafx.h"

#include DTEST
#include <windows.h>


int _tmain(int argc, _TCHAR* argv[])
{
MessageBox(NULL, _T("Test"), _T("Test"), MB_OK);
    return 0;
}
Автор: RedLord
Дата сообщения: 22.08.2006 15:14
floodway


Цитата:
Не судьба(стандарт) видать


стандарт плюсов и Страуструп, в частности, вообще не рекомендуют использовать макросы.

посмотри в сторону boost.
там очень мощная система инклудов. и используются нетривиальные конструкции #ifdef и т.д. возможно какие-то приемы возьмешь на вооружение
минус - очень тяжело разбираться в коде
Автор: TomasVercetti
Дата сообщения: 28.08.2006 16:47
Я использую CBuilder 2006. Хочу написать прогу на WinHTTP. Делаю #include <winhttp.h>, и появляются следующие ошибки:

[C++ Warning] winhttp.h(46): W8017 Redefinition of 'BOOLAPI' is
not identical
[C++ Warning] winhttp.h(79): W8017 Redefinition of
'SECURITY_FLAG_IGNORE_CERT_DATE_INVALID' is not identical
[C++ Warning] winhttp.h(80): W8017 Redefinition of
'SECURITY_FLAG_IGNORE_CERT_CN_INVALID' is not identical
[C++ Error] winhttp.h(111): E2238 Multiple declaration for
'HTTP_VERSION_INFO'
[C++ Error] wininet.h(462): E2344 Earlier declaration of 'HTTP_VERSION_INFO'

и так далее для многих объявлений. Но я не могу найти, где winhttp пересекается с wininet.h...
Помогите, пожайлуста, разобраться.
Автор: xdude
Дата сообщения: 28.08.2006 16:58
TomasVercetti
Попробуй поменять местами #include <winhttp.h> и #include <wininet.h>.
Автор: TomasVercetti
Дата сообщения: 28.08.2006 21:00
А я нигде не включаю #include <wininet.h> .... И внутри <winhttp.h> явного #include <wininet.h> тоже нету. Если я подключаю <wininet.h>, то всё работает. Только функций нужных нету. Вот я и застрял (
Автор: Mickey_from_nsk
Дата сообщения: 29.08.2006 13:49
TomasVercetti
А ты grep-ом не пробовал пройтись и найти объявления этих переменных?
Они могут оказаться совсем в левом файле...
Автор: Elf23
Дата сообщения: 29.08.2006 22:42
Люди пожалйста помогите написал прогу которая реализует односвязный список она в принципи дебажется но в одном месте выскакивает не могу понять почему
вот код
#include "stdafx.h"


struct list
{
    int data;
list *next;
     //static list *first, *cur;
};


//list* list::first = NULL;
//list* list::cur = NULL;

//int data;
//list *next;

     list *first, *cur;


int IsEmpty()
{
     return first==NULL;

}

void GOToPrev()
{
     if (IsEmpty())
     {
         std::cout<<"\n List is empty";
        
         return;
     }
if(cur==first)
     return;
        list *tmp;
        //tmp=new list;
        tmp=first;
        while(tmp->next!=cur)
            tmp=tmp->next;
         cur=tmp;
}
void AddFirst(int val)
{
     first = NULL;
    
     list *tmp;
     tmp= new list;
     tmp->data=val;
     tmp->next=NULL;


     first=cur=tmp;
}
void AddAfterCur(int val)
{
     if(IsEmpty())
     { AddFirst(val);
     return;
     }
     list *tmp;
     tmp= new list;
     tmp->data=val;
     tmp->next=NULL;
     cur->next=tmp;
    
}
int IsEnd()
{
     return cur->next==NULL;
}
void Move()
{
     if(IsEnd())
     {
         std::cout<<"\n End of list ";
        
         return;
     }
     cur=cur->next;
}
void GoToFirst()
    {
        cur=first;
    }
     int GetElem()
     {
         return cur->data;
     }
void DeleteFirst()
{
     list *tmp;
     //tmp= new list;
     tmp=first->next;
     delete first;
     first=tmp;
}
void DeleteCur()
{
     if(IsEmpty())
     {
         std::cout<<"\n List is emty! Can not remove!";
        
         return;
     }
     list *tmp;
     //tmp= new list;
     if(cur==first)
     {
         DeleteFirst();
         return;
     }
     else
     {
            tmp=cur;
            GOToPrev();
            cur->next=tmp->next;
            delete tmp;
        }
}
void Print()
     {
         if (IsEmpty())
             return;
        list *tmp;
         tmp=first;
         do
         {
             printf("%3i", tmp->data);
             tmp=tmp->next;
         }
         while(tmp!=NULL);
     }
int _tmain(int argc, _TCHAR* argv[])

{
    first=NULL;
    cur->next=NULL;\\\\\\\ вот здесь выдает ошибку какая то фигня с памятью
    cur=first;
    int q;
    char a;
    
        do
    
        {
        


int val;
Print();
// printf();

switch (a)
{
case '1':
printf("\nВведите значение:\n");
scanf("%i",&val);
AddFirst(val);
break;
case '2':
printf("\nВведите значение:\n");
scanf("%i",&val);
AddAfterCur(val);
break;
case '3':
if(IsEmpty())
printf("\nСписок пуст");
else
printf("\nЗначение текущего элемента равно %i",GetElem());

break;
case '4':
DeleteCur();
break;
case '5':
Move();
break;
case '6':
GoToFirst();
break;
case '7':
if(IsEnd())
printf("\nДостигнут конец списка");
else
printf("\nКонец списка не достигнут");

break;
case '8':
if(IsEmpty())
printf("\nСписок пуст");
else
printf("\nВ списке есть элементы");

break;


case '0':
GOToPrev();
break;
}
}
while (a!=27);
return 0;
}

зарание спасибо!!
Автор: xdude
Дата сообщения: 29.08.2006 22:49

Цитата:

first=NULL;
cur->next=NULL;\\\\\\\ вот здесь выдает ошибку какая то фигня с памятью
cur=first;

Дык cur еще не инициализирована, как можно ее членам что-то присваивать? По идее достаточно сделать cur=first=NULL;
Автор: Elf23
Дата сообщения: 29.08.2006 22:57
Большое спасибо надо попробовать
Автор: TomasVercetti
Дата сообщения: 30.08.2006 14:14
Смотрел и grep`ом. Только wininet.h, wininet.hpp, winhttp.h содержат объявления, например HTTP_VERSION_INFO. Зато узнал следующее. VCL где-то содержит объявления некоторых win структур. Поэтому при подключении других header`ов может возникать ошибка с ранним определением. По идее, conditional define NO_WIN32_LEAN_AND_MEAN должно помогать, но в данном случае не помогает. Если создать проект с winhttp.h без vcl.h, то всё работает. Но мне нужен vcl...
Автор: Mickey_from_nsk
Дата сообщения: 31.08.2006 06:40
TomasVercetti
А разнести их по разным файлам? Или на крайний случай - по разным модулям?
Автор: TomasVercetti
Дата сообщения: 31.08.2006 15:52
Проблема решается следующим образом. В ShlObj.hpp комментируется WinInet.hpp. Собственно всё. Потенциально это может привести к проблемам с некоторыми функциями winapi, реализуемыми в vcl. Это недочёт Borland.
Автор: DjBoom
Дата сообщения: 04.09.2006 00:12
Не работает программа, сам не опытный.
Вот код

Код:
# include <iostream.h>
struct veshestvo
    {
        char name[15];
        float p;
        int tip;
    };

void main ()
{
float temp=0;
    int i,j=0;
    veshestvo veshestva[13];
        for (i=1; i<=13; i++)
    {
        cout<<"Vvedite vewestvo("<<i<<")\n";
        cout<<"Name:";
        cin>>veshestva[i].name;
        cout<<"Udelnui ves=";
        cin>>veshestva[i].p;
        cout<<"Tip veshestva(provodnik-1, poluprovodnik-2, dielektrik-3):";
        cin>>veshestva[i].tip;
    }
    for (i=1; i<=13; i++)
    {
        if (2==veshestva[i].tip)
        {
            temp=temp+veshestva[i].p;
            j++;
        }
    }
    temp=temp/j;
    cout<<"\nObshii udelnui ves poluprovodnikov="<<temp<<"\n";

}

Автор: albel
Дата сообщения: 04.09.2006 01:06
DjBoom
гхм. Ну счётчики все надо от 0 до 12 пускать, иначе будет выход за границы массива.
Перед veshestvo veshestva[13]; я бы ещё struct добавил, ибо typedef'a не было
Автор: DjBoom
Дата сообщения: 04.09.2006 07:53
Хм. блин, даже не подумалбы что иза токого не заработает.
спасиба работает
Автор: Mickey_from_nsk
Дата сообщения: 04.09.2006 08:31
albel

Цитата:
Перед veshestvo veshestva[13]; я бы ещё struct добавил, ибо typedef'a не было

В С++ это не обязательно. Это - требование С. Ты же перед объявлением объекта класса слово class не ставишь.
Автор: xdude
Дата сообщения: 04.09.2006 13:56

Цитата:
for (i=1; i<=13; i++)

DjBoom
А вообще, чтоб не путаться, обычно делают так (и в учебниках так учат):

Код:
for (i=0; i<13; i++)
Автор: ryambler
Дата сообщения: 04.09.2006 20:12
Дорогие одноклубчане!
У меня возник вопрос. Я перевожу программу из языка паскаль, в язык с++, опыт программирования у меня не большой, и мне хотелось бы узнать, есть ли в языке с++ функция подобная функции в паскале trunc, я к томуже не знаю как работает функция trunc в языке паскаль, а иметь представления об этом хочется. Может кто нибуть сможет мне помочь в этой не сложной задачке?
Заранее благодарен.
Автор: RedLord
Дата сообщения: 04.09.2006 20:29
ryambler
Неудачная шутка.
если я ошибся и это вопрос, то лучший твой помощник - ближайший книжный магазин (рынок).
Автор: ryambler
Дата сообщения: 05.09.2006 09:13
RedLord

Спасибо и на этом, возможно этот вопрос стоило задать тем, кто программирует в паскале)
Автор: Qraizer
Дата сообщения: 05.09.2006 13:12
Зачем в книжный магазин? F1 всегда под рукой.
ryambler: ты, брат, извини, но если ты подойдёшь к преподу к универе и попробуешь спросить его о методах решения квадратного уравнения, то он ИМХО пошлёт тебя туда же. И не потому, что не знает.

Цитата:
Truncates a real-type value to an Integer-type
value.

Declaration:
function Trunc(X: Real): Longint;

Target:
Windows, Real, Protected

Remarks:
X is a real-type expression. Trunc returns a
Longint value that is the value of X rounded
toward zero.

Цитата:
Calculates the floor of a value.

double floor(
double x
);
float floor(
float x
); // C++ only
long double floor(
long double x
); // C++ only
float floorf(
float x
);
Parameter
x
Floating-point value.
Return Value
The floor function returns a floating-point value representing the largest integer that is less than or equal to x. There is no error return.
На большее терпения не хватило.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.