Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Часть 2. Я начинающий, подскажите как...(Все вопросы начинающих!!!)

51K
05 июля 2009 года
Олориин
1 / / 05.07.2009
День добрый вопрос такой: в ListBox создал 3 столбца
ListBox1->Columns=3;
каким образом записать строку в второй и третий столбцы?
Страницы:
1
24 ноября 2007 года
kot_
7.3K / / 20.01.2000
Эта тема предназначена для вопросов начинающих в программировании. Если вы только начинаете программировать и столкнулись с тем, что ваш HelloWord (как вариант - новая суперОС) - не компилируется по непонятной причине, хотя код вы один в один взяли из книжки (интернета, придумали сами), то скорей всего ваш вопрос НУЖНО размещать только в этой теме. Перед тем как его создать - обязательно воспользоваться поиском. Только в этой теме вы не рискуете нарваться на - RTFM, иди в ЧАВО, иди в гугль и в конце концов просто иди на ... - при условии конечно что в данной теме вопрос не задавался. Или если вы не задаете вопрос типа "расскажите мне подробно что такое шаблоны в С++" - т.е. вопрос, в ответ на который проще послать в вышеуказанное. Если же вы решили что, ваш вопрос настолько нов и свеж что никто до этого не спрашивал на форуме "как мне прочесть файл с использованием потока" и создали отдельную тему - не обессудьте - в лучшем случае тема будет закрыта, в худшем удалена - и вы получите нарушение.

Первая часть - здесь
34K
09 июля 2009 года
dusty
11 / / 18.03.2008
Цитата: Iktomy
А что, в Visual Studio пишется ногами, или, как в известном бояне, программист загружает Студию, потом стучит жопой по клаве?

Я, конечно, издеваюсь. Вместо WindowsForms, MFC и прочего используйте WinAPI. В той жес студии есть такой тип проектов. Это, если я правильно понял вопрос


Немного не то нужно=) Вот чтобы написать оконную программу в блокноте, потом скомпилить и получить рабочие окна, кнопки и т.п.

288
09 июля 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: dusty
Немного не то нужно=) Вот чтобы написать оконную программу в блокноте, потом скомпилить и получить рабочие окна, кнопки и т.п.



Эмм. Собственно пишите в блокноте (используя например WinAPI), потом запускайте компилятор из командной строки и будет вам счастье :) (если конечно разберетесь с параметрами коммандной строки).

9
09 июля 2009 года
Lerkin
3.0K / / 25.03.2003
Цитата: dusty
Немного не то нужно=) Вот чтобы написать оконную программу в блокноте, потом скомпилить и получить рабочие окна, кнопки и т.п.


А какой великий опыт программирования вы пытаетесь получить в Блокноте? Или вы думаете, что VS за вас программу напишет? Все как раз наоборот. Если имеются хорошие средства разработки (не нравится VS, так других полно), а программист ими не пользуется предпочитая Блокнот, то это никоим образом не характеризует его как профи.

50K
09 июля 2009 года
molotov
5 / / 09.07.2009
Возникла следующая проблема - в окне две кнопки, после нажатия одной из них надо заблокировать обе(защита от повторного запуска потока и изменения параметров работы), но после блокировки при нажатии любой клавиши клавиатуры раздаётся звуковой сигнал. Если в процессе работы переключиться на другое окно, а затем вернуться, то этот эффект пропадает. Блокировка такая:
button1.Enabled = false;
button2.Enabled = false;
Закоменчивание любой одной из этих строк убирает звуки.
Если на том же месте программы написать
button1.Hide();
button2.Hide();
то никаких проблем нет.
288
09 июля 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: molotov
Блокировка такая:
button1.Enabled = false;
button2.Enabled = false;



А так

 
Код:
button1.Enabled = false;
button2.Enabled = false;
Focus(); // Если обработчик метод класса формы
262
09 июля 2009 года
Iktomy
1.2K / / 11.10.2004
Цитата: dusty
Немного не то нужно=) Вот чтобы написать оконную программу в блокноте, потом скомпилить и получить рабочие окна, кнопки и т.п.



Хе-хе. Поищите - Microsoft Visual C++ Toolkit 2003. Я правда его использовал чисто как компилятор к Студии 6 (exe оч маленькие получались)

Но там какраз - командная строка, все как надо. Лучший набор для обучения набора компилирующегося и работающего кода вcлепую:)

Плюс доки по нему: http://msdn.microsoft.com/en-us/library/aa290065(VS.71).aspx

50K
09 июля 2009 года
molotov
5 / / 09.07.2009
Цитата: nikitozz
А так
 
Код:
button1.Enabled = false;
button2.Enabled = false;
Focus(); // Если обработчик метод класса формы



Спасибо, помогло!
В MSDN нашёл только метод Focus(), а тут - функция. Что именно происходит?(или дайте, пожалуйста, ссылку на описание)

1.9K
09 июля 2009 года
GreenRiver
451 / / 20.07.2008
Цитата: molotov
Спасибо, помогло!
В MSDN нашёл только метод Focus(), а тут - функция. Что именно происходит?(или дайте, пожалуйста, ссылку на описание)


Это тоже метод, только это метод формы. В данном случае Focus() равносильно this.Focus().

1
10 июля 2009 года
kot_
7.3K / / 20.01.2000
Продолжение темы "Я начинающий..."
Старая тема - здесь
34K
10 июля 2009 года
dusty
11 / / 18.03.2008
Цитата: Lerkin
А какой великий опыт программирования вы пытаетесь получить в Блокноте? Или вы думаете, что VS за вас программу напишет? Все как раз наоборот. Если имеются хорошие средства разработки (не нравится VS, так других полно), а программист ими не пользуется предпочитая Блокнот, то это ни коим образом не характеризует его как профи.


Просто сначала хочется увидеть все как есть "изнутри", посмотреть что да как, а уже потом переходить к VC. А то VC запускаю, выбираю приложение win32 появляется какой-то код, добавляю кнопку - еще код, что за код не понятно, ибо ни разу не написал необходимый для окон код самостоятельно и осмысленно. Просто визуальная среда ассоциируется с визуал басиком, там кнопку вынес, написал что надо и все, пытался применить подобный метод к С++ =) Не люблю когда в коде есть что-то, что мне непонятно...

1
10 июля 2009 года
kot_
7.3K / / 20.01.2000
Цитата: dusty
Просто сначала хочется увидеть все как есть "изнутри", посмотреть что да как, а уже потом переходить к VC. А то VC запускаю, выбираю приложение win32 появляется какой-то код, добавляю кнопку - еще код, что за код не понятно, ибо ни разу не написал необходимый для окон код самостоятельно и осмысленно. Просто визуальная среда ассоциируется с визуал басиком, там кнопку вынес, написал что надо и все, пытался применить подобный метод к С++ =) Не люблю когда в коде есть что-то, что мне непонятно...


данная тема не предназначена для холиваров. посему угомонитесь и впердь более четко формулируйте то что вам надо. Замечание вам сделано вполне верно - кто вам мешает в той же студии писать код "осмысленно" хз знает. Не надо на форуме разговаривать лозунгами, смысла которых вы сами не понимаете - здесь либо вы задавайте конкретные вопросы, либо отправляйтесь туда где с вами ктото будет совместно рассуждать "в блокноте писать круто, в студии не круто патамушто не понятно чего она туда добавляет". Еще одна попытка рассусоливания на данную тему в тематических форумах для вас закончится нехорошо.

43K
15 июля 2009 года
breeve
54 / / 05.06.2009
Доброго времени суток! Такой вопрос. Есть фаил(фаил.тхт) в котором есть 25 записей. Необходимо вывести определенную запись(например 19). Как мне разделять записи в файле? Я думал допустим вставлять между каждой записью знак('$') и потом считывать с его помощью.Правда я не до конца понял алгоритм поиска. Подскажите.
9.0K
15 июля 2009 года
t-34
129 / / 30.11.2007
Цитата: breeve
Доброго времени суток! Такой вопрос. Есть фаил(фаил.тхт) в котором есть 25 записей. Необходимо вывести определенную запись(например 19). Как мне разделять записи в файле? Я думал допустим вставлять между каждой записью знак('$') и потом считывать с его помощью.Правда я не до конца понял алгоритм поиска. Подскажите.



делаешь seek в файле по размеру одной записи. как я понимаю, запись в виде структуры будет, и в файле все записи друг за другом. Берешь размер структуры и делаешь смещение относительно начала файла на (номер записи - 1) * размер структуры.
где-то так :)

43K
15 июля 2009 года
breeve
54 / / 05.06.2009
Цитата: t-34
делаешь seek в файле по размеру одной записи. как я понимаю, запись в виде структуры будет, и в файле все записи друг за другом. Берешь размер структуры и делаешь смещение относительно начала файла на (номер записи - 1) * размер структуры.
где-то так :)



что такое seek? я не много не понял. наврятли в виде структуры. мне нужно обработать фаил таким образом чтобы раздулить его на куски. и выборочно куски выводить

int main()
{
int c, i;
char filename[81] ="dkam_6ways.txt", input_line[251];
ifstream file_in(filename);

if (! file_in)
{
cout << "file" << filename;
cout <<" could not be opened.";
exit(1);
}

while(( c = file_in.get()) != '$')
{
cout.put(c);

}
cin.get();
return 0;
}

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

87
15 июля 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: breeve
что такое seek?


в Гугле набираешь что-то типа: C++ seek

Цитата: breeve
я не много не понял. наврятли в виде структуры. мне нужно обработать фаил таким образом чтобы раздулить его на куски. и выборочно куски выводить


Можно по разному. Если строки одинаковые, то как сказал(а) t-34. Можно вашим способом - пропустите в цикле требуемое число строк.

А можно загрузить все в стандартный контейнер vector, состоящий из строк типа string, а потом вывести нужный элемент.
Заполнять можно с помощью функции:

istream& getline ( istream& is, string& str, char delim );

например

getline(file_in, str, '$');

43K
19 июля 2009 года
breeve
54 / / 05.06.2009
Цитата: Kogrom
в Гугле набираешь что-то типа: C++ seek

Можно по разному. Если строки одинаковые, то как сказал(а) t-34. Можно вашим способом - пропустите в цикле требуемое число строк.

А можно загрузить все в стандартный контейнер vector, состоящий из строк типа string, а потом вывести нужный элемент.
Заполнять можно с помощью функции:

istream& getline ( istream& is, string& str, char delim );

например

getline(file_in, str, '$');




Я в принципе понял. Появился еще вопрос а есть ли какая нибудь функция которая делает тоже самое только не из потока(file_in) а из другой строки?

9
19 июля 2009 года
Lerkin
3.0K / / 25.03.2003
Цитата: breeve
Я в принципе понял. Появился еще вопрос а есть ли какая нибудь функция которая делает тоже самое только не из потока(file_in) а из другой строки?


В сторону stringstream

43K
20 июля 2009 года
breeve
54 / / 05.06.2009
Цитата: Lerkin
В сторону stringstream



Спс. Сделал все четко. Сделал небольшой цитатничек кому интересно могу кинуть исходничок.

42K
20 июля 2009 года
blackswan
8 / / 09.11.2008
Есть вот такой класс (пример взят из исходников библиотеки ccRTP), наследуемый от Thread и TimePort, а также внутри него создается другой класс RTPSession.

class ccRTP_AudioTransmitter: public Thread, public TimerPort
{
private:
RTPSession *socket;

public:
ccRTP_AudioTransmitter()
{ socket=NULL;}
~ccRTP_AudioTransmitter()
{terminate();delete socket;}
void run(void)
{long i;
i=1;
socket = new RTPSession(host_ip,TRANSMITTER_BASE);
socket->setSchedulingTimeout(10000);
if( !socket->addDestination(host_ip,RECEIVER_BASE) )
cerr << "I could not connect.";
socket->setPayloadFormat(StaticPayloadFormat(sptL16_DUAL));
socket->startRunning();
}

Как видно, создается RTPSession внутри функции run, наследуемой от Thread, как она вызывается, я не знаю, я вызываю только start (тоже от Thread), которая видимо вызывает run. Всё компилится и билдится, но проблема в том, что при дебаге видно, что вот тут socket = new RTPSession(host_ip,TRANSMITTER_BASE); сокету ничего не присваивается, он остается NULL, дальше по коду метода run дебаггер не идет, и потом при первом же обращении к socket выдает SIGSEGV. В примере от разработчиков библиотеки та же ошибка, хотя в релизовой версии всё вроде работает. И еще в редакторе пишет про ошибку Unable to resolve identifier RTPSession и всех методов,связанных с сокетом, хотя при компиляции молчит. Все библиотеки и хедеры подключил как было указано. Помогите, в чем может быть причина.
47K
22 июля 2009 года
centnew
15 / / 29.03.2009
Нужно написать программу, которая будет возводить в степень больше 20ой числа большего max_int, проблема состоит в том что, входящее число может быть разное а я не могу заранее создать массив подходящий для результата, знаю что это как-то делается в куче, но как не знаю подскажите пожалуйста!!!
51K
22 июля 2009 года
Pirit
4 / / 22.07.2009
создал топик, засмеяли..!
подскажите в данном разделе!
есть строка-массив char - str[5]="0x0D" - это число 13 в шестнадцатиричной форме, как преобразовать тип к Uint16, что бы получилось 0x0D в Uint16?!
Спасибо!
47K
22 июля 2009 года
centnew
15 / / 29.03.2009
Alm3n
Спасибо про такое я даже и не подумал, но я всё же буду искать ответ по той ссылке что вы дали ниже.
Если что буду рад всем подсказкам по этой теме:)
316
23 июля 2009 года
Alm3n
889 / / 29.05.2009
centnew
Код:
void f(unsigned long long int );

int main()
{
f(num);
return 0;
}
void f(unsigned long long int dim)
{
     int mass[dim];
}

создает массив переменной длины.для типа unsigned long long int, максимальная размерность массива будет (2^64)-1.размер массива определяется переменной num,которая передается в функцию f().при каждом вызове f создается массив mass разной длины.однако переменные длины могут иметь только локальные массивы,тоесть видимые в блоке или прототипе.все действия с массивом нужно описать в функции f,в main массив будет недоступен.нажеюсь правльно мысль изложил.
9
23 июля 2009 года
Lerkin
3.0K / / 25.03.2003
Цитата: Alm3n
centnew
можно использовать списки.
http://www.sch2.ru/ilyin/cpp/pointers/list.htm
...


Только никому больше не предлагайте ссылок на подобную "страничку для учеников". Не плодите зла.

316
23 июля 2009 года
Alm3n
889 / / 29.05.2009
malloc,вызванная несколько раз в одной и той же функции,постоянно выделяет один и тот же сегмент памяти.calloc поступает так же.почему может так быть?
 
Код:
void add(struct TList *list,struct TList *p,int num)
{        
     p=(TList*)malloc(sizeof(struct TList));;
     if (!p) printf("ERR\n");
     p->data=num;
     p->next=&list;
     list=p;
  int s;
  scanf("%i",&s);
}
12K
23 июля 2009 года
lifs
163 / / 06.09.2007
Цитата: Alm3n
malloc,вызванная несколько раз в одной и той же функции,постоянно выделяет один и тот же сегмент памяти.calloc поступает так же.почему может так быть?
 
Код:
void add(struct TList *list,struct TList *p,int num)
{        
     p=(TList*)malloc(sizeof(struct TList));;
     if (!p) printf("ERR\n");
     p->data=num;
     p->next=&list;
     list=p;
  int s;
  scanf("%i",&s);
}



Может, если между вызовами malloc вызывается free, и этот кусок освобождается. Но или если есть бага в самой malloc, что менее вероятно.

316
23 июля 2009 года
Alm3n
889 / / 29.05.2009
lifs,я пробовал освобождать,но это не дает результата,да и нельзя его освободить,это функция будет использоваться для создания списка.
вот этот код почему то работает отлично,но стоит вставить его в мою функцию...
Код:
#include <stdlib.h>
      #include <stdio.h>
      #define NUM_INTS 7623
      int *memblock;
      main()
      {
        memblock = malloc(NUM_INTS*sizeof(int));
        if (memblock==NULL)
            printf("Нехватка памяти\n");
        else
            printf("%i\n",memblock);
             memblock = malloc(NUM_INTS*sizeof(int));
            int ff;
            scanf("%i",&ff);
        free(memblock);
      }

Сразу попутный вопрос,вот это похоже на создание списка?
Код:
#include <stdio.h>
#include <stdlib.h>

typedef struct TList
  {
  int data;
  struct TList *next;
  }TList;
 
void init(struct TList *list)
{
  list=(struct TList*)malloc(sizeof(struct TList));
  if (!list) printf("ERR\n");
  list=NULL;
}
 
void wipe(struct TList *list,struct TList *p)
{
      p=list;
      while(p->next)
      {
            p=p->next;
            free(list->data);
            free(list);
            list=p;
      }
      free(list->data);
      free(list);
}
 
void add(struct TList *list,struct TList *p,int num)
{        
     p=(TList*)malloc(sizeof(struct TList));;
     if (!p) printf("ERR\n");
     p->data=num;
     p->next=&list;
     list=p;
  int s;
  scanf("%i",&s);
}
     

void view(struct TList *list,struct TList *p)
{    int i;
     p=list;
     for(i=1;i<4;i++)
{
                    printf("%i\n",&list->data);
                    p=p->next;
}
}

int main()
{
    struct TList head,current;
    int ss;
init(&head);
head=current;
add(&head,&current,1);
add(&head,&current,2);
add(&head,&current,3);
view(&head,&current);
wipe(&head,&current);
scanf("%i",&ss);
       return 0;
}

я его еще до конца не отладил,но хотя бы приблизительно?Может я где то в описании структур ошибся...Вчерашний вопрос о использовании списка для возведения числа в 20ю степень побудил меня к изучению списков на Си,вобще я очень посредственно знаком с этим языком,вот и не могу толком разобраться.
353
23 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: Alm3n
centnew
Код:
void f(unsigned long long int );

int main()
{
f(num);
return 0;
}
void f(unsigned long long int dim)
{
     int mass[dim];
}

создает массив переменной длины.для типа unsigned long long int, максимальная размерность массива будет (2^64)-1.



Столько бреда в одном сообщении. И когда люди научаться проверять компилятором свои догадки?

12K
23 июля 2009 года
lifs
163 / / 06.09.2007
Цитата: Alm3n
lifs,я пробовал освобождать,но это не дает результата,да и нельзя его освободить,это функция будет использоваться для создания списка.
вот этот код почему то работает отлично,но стоит вставить его в мою функцию...
Код:
#include <stdlib.h>
      #include <stdio.h>
      #define NUM_INTS 7623
      int *memblock;
      main()
      {
        memblock = malloc(NUM_INTS*sizeof(int));
        if (memblock==NULL)
            printf("Нехватка памяти\n");
        else
            printf("%i\n",memblock);
             memblock = malloc(NUM_INTS*sizeof(int));
            int ff;
            scanf("%i",&ff);
        free(memblock);
      }


Как вы поняли, что он работает отлично? Отлично для чего? В этом коде сначала выделяется память

 
Код:
memblock = malloc(NUM_INTS*sizeof(int));

А потом сразу же выделяется еще память без освобождения только что выделенной.
 
Код:
memblock = malloc(NUM_INTS*sizeof(int));
            int ff;


По поводу списков.

Цитата: Alm3n

Сразу попутный вопрос,вот это похоже на создание списка?



Нет не похоже. Ну разве что структурой. Функция init бессмысленна по двум причинам:

  1. Вот это
     
    Код:
    list=(struct TList*)malloc(sizeof(struct TList));
    выделяет память и записывает адрес в локальную переменную.
  2. После чего без освобождения памяти зануляет указатель
     
    Код:
    list=NULL;

В остальных функциях ошибок еще больше.

Почитайте книги:
  1. Брайан Керниган, Деннис Ритчи. Язык программирования C (здесь про С)
  2. Брайан Керниган, Роб Пайк. Практика программирования (а здесь найдете про списки)
47K
23 июля 2009 года
centnew
15 / / 29.03.2009
Nixus я так понимаю это наверное в других языках реализованно.
353
23 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: centnew
Nixus я так понимаю это наверное в других языках реализованно.


Что "это"?

47K
23 июля 2009 года
centnew
15 / / 29.03.2009
Nixus то что long каждый рас увеличивает длину бит в два раза
316
23 июля 2009 года
Alm3n
889 / / 29.05.2009
Цитата: Nixus
Столько бреда в одном сообщении. И когда люди научаться проверять компилятором свои догадки?


Это не мои догадки,такой пример был приведен в книге Герберта Шилдта(Полный справочник по Си,четвертое издание,стр 121,261),а код я проверил,массив создается и заполняется.
изначально код выглядел так

 
Код:
void f(int dim)
{
char str[dim];
/* ... */
}

я только изменил имя массива и его тип и написал прототип функции.
316
23 июля 2009 года
Alm3n
889 / / 29.05.2009
lifs,тоесть я не могу дважды подряд вызвать выделение памяти для одной и той же переменной,не освобождая перед этим ее?
12K
24 июля 2009 года
lifs
163 / / 06.09.2007
Цитата: Alm3n
lifs,тоесть я не могу дважды подряд вызвать выделение памяти для одной и той же переменной,не освобождая перед этим ее?



Можете, но будет утечка памяти.

353
25 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: centnew
Nixus то что long каждый рас увеличивает длину бит в два раза



 
Код:
#include <stdio.h>

int main() {
    printf( "%i\n", sizeof(int) == sizeof(long int) ); // Упс, а размеры-то равны...
    return 0;
}


Цитата: Alm3n
Это не мои догадки,такой пример был приведен в книге Герберта Шилдта(Полный справочник по Си,четвертое издание,стр 121,261),а код я проверил,массив создается и заполняется.
изначально код выглядел так
 
Код:
void f(int dim)
{
char str[dim];
/* ... */
}

я только изменил имя массива и его тип и написал прототип функции.


Выделите мне 100000000 элементов в стэке, пожалуйста.

 
Код:
f( 100*1000*1000 ); // Упс...
47K
27 июля 2009 года
centnew
15 / / 29.03.2009
Думаю сначало отладить прогу а потом уже переделывать на динамический массив, потестите плиз.
43K
28 июля 2009 года
breeve
54 / / 05.06.2009
всем здраствуйте.
такой вопрос. задача проста, необходимо сделать ввод/вывод в файл/из файла таким образом:
switch()
{
case 1
записываешь в файл.
case 2
считываешь из файла.
}

я сначала думал сделать по case 1 поток out по case 2 - in.

вот как то так:
switch(choice)
{
case 1:
ofstream out("log.txt", ios:: out);

if (!out)
{
cerr << "can't open 'log.txt'.";
return 1;
}
...
...
out.close();
break;
case 2:
ifstream in("log.txt");

if (! in)
{
cerr << "can't open 'log.txt'";
return 1;
}
...
...
in.close();
}

но он мне выдавал ошибку:
\log.cpp jump to case label
\log.cpp crosses initialization of `std:: ofstream out'

я чтото погулил и ничего не нашел дельного.
потом подумал сделать один поток на ввод и вывод. но что-то тоже какойто бред. он то фаил не хочет создавать то еще чтонибудь бредовое.
подскажите может чтото не так делаю.
288
28 июля 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: breeve

подскажите может чтото не так делаю.



Вот

Код:
switch(choice)
    {
        case 1:
        {
            ofstream out("log.txt", ios:: out);
            if (!out)
            {
                cerr << "can't open 'log.txt'.";
                return 1;
            }
            ...
            ...
            out.close();
        }
        break;
        case 2:
        {
            ifstream in("log.txt");

            if (! in)
            {
                cerr << "can't open 'log.txt'";
                return 1;
            }
            ...
            ...
            in.close();
        }
                break;
    }
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог