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

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

Автор: V0lt
Дата сообщения: 16.11.2014 17:12
ne_viens
Мне не надо ничего открывать.
Вот самое простое объявление строки:
Код: char str[] = "Hello!\nThis is a text file.\nThe end.";
Автор: Labutin
Дата сообщения: 16.11.2014 17:15
V0lt
Вам ne_viens дал правильный ответ на ваш вопрос.
Магии нет - файл нужно открыть и прочитать.
Автор: ne_viens
Дата сообщения: 16.11.2014 17:17

Цитата:
...Мне не надо ничего открывать...


При таком условии невозможно.
Автор: vlary
Дата сообщения: 16.11.2014 17:22
V0lt
Цитата:
Мне не надо ничего открывать.
Тебе это только кажется.
А чтобы присвоить значение массиву str[], пиши функцию, которая сделает то,
о чем написал ne_viens, и вернет указатель на буфер с нужной строкой.

Автор: V0lt
Дата сообщения: 16.11.2014 17:43
ne_viens

Цитата:
При таком условии невозможно.

Сейчас такое сделано через ресурсный файл (.rc). Во время выполнения никакие внешние текстовые файлы не открываются, т.к. данные уже находятся в теле исполняемого файла.

Проблема в том, что с ресурсными файлами есть различные проблемы при компиляции. Поэтому хотелось уйти от использования .rc файлов.
Автор: ne_viens
Дата сообщения: 16.11.2014 17:57
Если в своём теле, тогда как данные в .data или в .const секциях. Но это почти то-же самое что и (const) char str[] = ...;

PS Есть такая тулза bin2h, которая бинарный файл кодирует в *.h, потом уже можно #include его. Да и самому написать такое не сложно.
Автор: V0lt
Дата сообщения: 16.11.2014 19:00
ne_viens

Цитата:
Если в своём теле, тогда как данные в .data или в .const секциях. Но это почти то-же самое что и (const) char str[] = ...;
Именно так и нужно. Главное чтобы текст был во внешнем файле, так с ним удобнее работать.


Цитата:
Есть такая тулза bin2h, которая бинарный файл кодирует в *.h, потом уже можно #include его.

Утилита конечно интересная, но это по сути костыль (посмотрю можно ли его будет использовать). Неужели в стандарте C++ ничего подобного не предусмотрено?
Автор: ne_viens
Дата сообщения: 16.11.2014 20:55
Сомневаюсь.
И не надо костылей стыдится, они здорово помогают передвигаться. Особенно если одной ноги нету.
Например, код Libreoffice можно посмотреть- там все региональные настроики в xml файле, который на Perl'е костыляют в тело dll'a.
Любая приличная среда разработки имеет Pre-build events, откуда можно бат файл запустить, в котором много строчек с bin2h -xx yyy, например.
Автор: aRLi
Дата сообщения: 25.11.2014 01:36

Цитата:
...С этого Preview эта функция работает только для x64...
"Resumable functions in C++" в 2015 Preview с примерами...
Автор: BagaBaga
Дата сообщения: 29.11.2014 21:27
они наконец-то изобрели сопрограммы из 70х...
Автор: vlary
Дата сообщения: 02.12.2014 18:16
BagaBaga
Цитата:
Может, кто подскажет pdfку
Ты удивишься, но сие имеется здесь на форуме, в разделе eBookz: Ссылка
Автор: BagaBaga
Дата сообщения: 02.12.2014 19:03
Спасибо. Сначала спросил. Потом нашёл.
Автор: nick7inc
Дата сообщения: 03.12.2014 18:23
Добрый вечер.
Столкнулся с проблемой при работе с scanf(). Какая у меня задача. Есть табличка данных в текстовом файле, формат double, в строках данные разделены (допустим) запятыми, строки - символом перевода строки (\n). Прочитать такой файл довольно просто, пока не сталкиваешься с вариантом, когда какое-то число пропущено.


Код: 0.0,0.1,0.2
0.3,0.4,0.5
0.6,0.7,
0.8,0.9,1.0
Автор: beglec777
Дата сообщения: 04.12.2014 12:36
ребятки, можно как-то в фоне во время работы компьютера проверять наличие мауса в подключеном состоянии? чтобы в обратном случае выдавать false?
Автор: V0lt
Дата сообщения: 04.12.2014 19:01
beglec777
Google дает такое решение.

Код: bool MousePresent()
{
return ::GetSystemMetrics(SM_MOUSEPRESENT) != 0;
}
Автор: beglec777
Дата сообщения: 05.12.2014 05:34
спс!
Автор: nick7inc
Дата сообщения: 05.12.2014 14:38
Похоже, что конструкция

Код: unsigned char x; scanf ("%hhu",&x);
Автор: bomzzz
Дата сообщения: 25.12.2014 14:46
делаю инклуд для масма32. помогите пожалуйста разобраться чему эти константы равны

Цитата:
;WIMMessageCallback Notifications:

; WIM_MSG = WM_APP + 0x1476,
; WIM_MSG_TEXT,
; WIM_MSG_PROGRESS,
; WIM_MSG_PROCESS,
; WIM_MSG_SCANNING,
; WIM_MSG_SETRANGE,
; WIM_MSG_SETPOS,
; WIM_MSG_STEPIT,
; WIM_MSG_COMPRESS,
; WIM_MSG_ERROR,
; WIM_MSG_ALIGNMENT,
; WIM_MSG_RETRY,
; WIM_MSG_SPLIT,
; WIM_MSG_FILEINFO,
; WIM_MSG_INFO,
; WIM_MSG_WARNING,
; WIM_MSG_CHK_PROCESS,
; WIM_MSG_WARNING_OBJECTID,
; WIM_MSG_STALE_MOUNT_DIR,
; WIM_MSG_STALE_MOUNT_FILE,
; WIM_MSG_MOUNT_CLEANUP_PROGRESS,
; WIM_MSG_CLEANUP_SCANNING_DRIVE,
; WIM_MSG_IMAGE_ALREADY_MOUNTED,
; WIM_MSG_CLEANUP_UNMOUNTING_IMAGE,
; WIM_MSG_QUERY_ABORT
Автор: ne_viens
Дата сообщения: 25.12.2014 15:49
WIM_MSG equ WM_APP + 1476h
WIM_MSG_TEX equ WIM_MSG + 1
WIM_MSG_PROGRESS equ WIM_MSG + 2
WIM_MSG_PROCESS equ WIM_MSG + 3
...
Автор: bomzzz
Дата сообщения: 25.12.2014 15:51

Цитата:
WIM_MSG equ WM_APP + 1476h

спасибо. больше всего меня мучило 1476 это 16ричное или десятичное
Автор: bomzzz
Дата сообщения: 02.01.2015 08:07
у кого 2010 студия стоит обновленная до последних обновлений, посмотрите пожалуйста версию файлов, в папке Microsoft Visual Studio 2010\VC....\BIN
ml.exe 10.0.40219.1
link.exe 10.0.40219.1
lib.exe 10.0.30319.1
dumpbin.exe 10.0.30319.1
editbin.exe 10.0.30319.1
поменялись или нет?
на хп поставил студию и обновится не смог. косяк какой то с сертификатами что ли, типа такого
Автор: SuPriTo
Дата сообщения: 03.01.2015 21:27
Подскажите, какое максимальное кол-во потоков можно создать в одном win32 процессе?
Автор: vlary
Дата сообщения: 03.01.2015 21:55
SuPriTo
Цитата:
Подскажите, какое максимальное кол-во потоков можно создать в одном win32 процессе?

Цитата:
If you have to ask about various operating system limits,
you're probably doing something wrong.
Думаю, проблема не в количестве потоков,
а в ограниченности ресурсов, им выделяемых, стека, например.
И получится как в сказке про Урфина Джюса и его деревянных солдат,
которым досталось слишком мало волшебного порошка,
и они получились совсем хилыми.
Если действительно нужно много самостоятельных обработчиков, попробуй
использовать fibers, они менее прожорливы.
http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms686919%28v=vs.85%29.aspx
Автор: SuPriTo
Дата сообщения: 03.01.2015 22:15
vlary
Меня именно кол-во поток интересует. Я так понял ограничение только в ресурсах. Специальных ограничений не существует?
P.S. Да и про fibers спасибо.
Автор: ne_viens
Дата сообщения: 03.01.2015 22:26
#include <windows.h>
#include <stdio.h>

int __stdcall tp(void* par)
{
    Sleep(1000000);
//    for(;;)
//        ;
    return 0;
}

main()
{
    int i;
    for(i = 0; ; ++i)
    {
        if(!(i & 0xfff))
            printf("%x\n", i);
        CreateThread(NULL, 0, tp, 0, 0, NULL);
    }
}

Спящих много...

Err,

main()
{
    int i;
    for(i = 0; CreateThread(NULL, 0, tp, 0, 0, NULL); ++i)
        ;
    printf("%i\n", i);
    getch();
}

Только 2030.
Автор: svchost
Дата сообщения: 10.01.2015 20:32
help.... помогите кто может.... есть код на turbo c++ рисует фигуру скругленный прямоугольник.... подскажите что поменять мне нужно чтобы рисовал только линию....

void rect(int x1, int y1,int x2,int y2, int c)
{
int t,r;
int x,y,d;
if(x1>x2)
{
t=x1;
x1=x2;
x2=t;
}
if(y1>y2)
{
t=y1;
y1=y2;
y2=t;
}
r=min(y2-y1,x2-x1)/2;
if(r>10)
r=10;
d=3-2*r;
x=0;
y=r;
while(x <= y)
{
//right-lower
setpixel(x+x2-r,y+y2-r,c);
setpixel(y+x2-r,x+y2-r,c);

//right-upper
setpixel(x+x2-r,-y+y1+r,c);
setpixel(y+x2-r,-x+y1+r,c);

//left-upper
setpixel(-x+x1+r,-y+y1+r,c);
setpixel(-y+x1+r,-x+y1+r,c);
//left-lower
setpixel(-x+x1+r,y+y2-r,c);
setpixel(-y+x1+r,x+y2-r,c);
if(d<0)
    d=d+4*x+6;
else
    {
    d=d+4*(x-y)+10;
    y--;
    }
x++;
}
for(x=x1+r;x<=x2-r;x++)
{
setpixel(x,y1,c);
setpixel(x,y2,c);
}
for(y=y1+r;y<=y2-r;y++)
{
setpixel(x1,y,c);
setpixel(x2,y,c);
}
}
Автор: landy
Дата сообщения: 11.01.2015 14:09
Нужно оставить только тот код, который рисует горизонтальные (например) линии:


Код: for(x=x1+r;x<=x2-r;x++)
{
setpixel(x,y1,c); // это первая
setpixel(x,y2,c); // это вторая, параллельная ей
}
Автор: akaGM
Дата сообщения: 11.01.2015 15:38
svchost

Код:
void rect(int x1, int y1,int x2,int y2, int c) {
setcolor(c);
rectangle(x1, y1, x2, y2);
}
Автор: landy
Дата сообщения: 11.01.2015 15:43
akaGM, человеку, вероятно, требуется самому реализовать рисование линии поточечно.

Алгоритм Брезенхэма
Автор: akaGM
Дата сообщения: 11.01.2015 15:57
landy

ну если он сам при этом писал...


Цитата:
подскажите что поменять мне нужно чтобы рисовал только линию....
при верном алгоритме рисование "только линию" должно происходить при равенстве координат
(если я правильно понял вопрос)

например,
rect(x1, y1, x2, y1)
или
rect(x1, y1, x1, y2)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

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


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