(Часть 2) Я начинающий, подскажите пожалуйста как...
Прежде чем задать вопрос здесь, вы обязаны использовать
- Поиск по форуму, используя ключевые слова из вашего вопроса. Как правильно использовать поиск - читайте здесь
- Список наиболее часто задаваемых вопросов (FAQ)
- Поиск по предыдущей теме
Кроме того, прежде чем размещать сообщение, ознакомьтесь с правилами.
При размещении вопросов начинающих помимо указанной темы, будет выдаваться нарушение, а тема удаляться.
хочу сделать Tcanvas для разрабатываемого компонента, наследуемого от TButton;
Прописываю:
c->Handle = GetDC(this->Handle);
c->TextOutA(0,10,"Dan");
Потом просто создаю и вызываю функцию с созданием Canvas:
TButton1* b = new TButton1(this);
b->Parent = this;
b->Rep();
//----------------
К сожалению не работает... А как правильно??
Заранее спасиб ))
однако компилятор не знает что такое Component!!
нет у TComponet св-ва Component поэтому и не знает
Зачем в Билдере 6-ом рядом с закладками Unit1.cpp и Unit1.h
закладка Diagram? Алгоритм что-ли рисовать...
Искал в Инете - ничего не нашел.
Запускаю процесс:
CreateProcess( "C:\\MK.exe",
NULL,
NULL,
NULL,
false,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&StartInfo,
&ProcInfo);
Почему вот так не могу его закрыть?
Спасибо всем.
Зачем в Билдере 6-ом рядом с закладками Unit1.cpp и Unit1.h
закладка Diagram?
Составлять типа-UML схемы
Участок код
int len;
do
{
if (SOCKET_ERROR == (len = recv (s, (char *) &buff, MAX_PACKET_SIZE, 0) ) )
return;
Memo1->Lines->Add(buff);
}
while (len!=0);
качает страницу не полностью.
Скажите пожалуйста: "А почему?".
Диаграмму с помощью TChart умею делать, а в WEB я не силен.
Диаграмму с помощью TChart умею делать, а в WEB я не силен.
в FAQ-е есть вопрос "как скачать файл из интернета" его смотри.
потом придется парсить хтмл страницу. (можно через DOM IE парсить)
parsing - синтаксический анализ, синтаксический разбор;
Где "находится" файл и на что вы наводите мышку. Если на ListView, то GetItemAt.
А зачем такие сложности если не секрет? Может быть Вас устроят такие варианты:
1. Список файлов отображается в вашей программе и вы щелкаете по нужному (то, о чем говорит nikitozz)
2. По нажатию на кнопку открывается диалоговое окно выбора файла TOpenDialog, после чего выбирается файл
3. Нужный файл "перетаскивается" в окно Вашей программы
Сабклассить эксплорер, конкретно окно с названием класса - SysListView32. Сделать это можно только "внутри" процесса explorer.exe, поэтому нужно туда внедриться - ловушка, удаленный поток или написать расширение оболочки реализовав в нем IQueryInfo (при наведении на файл в эксплорере, загрузит длл и выдаст все про файл под мышкой)
Код такой и к нему надо приляпать этот дуратский вывод:
puts("Enter name file:\n");
gets(fname);
if((fp=fopen(fname,"r")) == NULL)
{
printf("Error");
return;
}
double n;
for(i=0; i<ogr; i++)
{
fscanf(fp,"%lf",&n); <-- как тут организовать постраничный вывод?
printf("%lf", n);
}
BorlandC 3.1
Задача следующего рода: Дана строка. Нужно словечки в ней поставить в алфавитном порядке, а потом ещё отсортировать по длине.
Фигня в том, что использую strtok, но это зараза работает только с указателями, а мне нужен массив. Да и нигде не нашел на вашем форуме про сортировку по длине и алфавиту. Вроде можно как-то через метод пузырька, но как-то не работает он.
Вообще получил вот такое*, а дальше не знаю как действовать. Может надо в динамический массивы идти или что-то другое??
*код:
#include<string.h>
int main()
{
char str [] ={"Pippipipip pypypypypyp rararraarara draniki beliahiki"};
char *word;
char *words[]={0};
int i=0;
word=strtok(str, " ");
while(word)
{
words=word;
i++;
}
return 0;
}
И все же как-то можно проще делать, но увы...
И ещё у меня тупой вопрос: А есть авторы, которые... там скажем.. пишет лучше, чем Подбельский?
Да, вот пытался ещё сделать через qsort, но там вообще лес дикий..
Добавил qsort для алфавита, но не запускается. В чем может быть проблема? Пишет: not enough memory.
#include<string.h>
#include <stdlib.h>
int compare(const void *a, const void *b)
{
unsigned long *pa=(unsigned long *)a,
*pb=(unsigned long *)b;
return strcmp((char *)*pa, (char *) *pb);
}
void main()
{
char str [] ={"Pippipipip pypypypypyp rararraarara chebureki plushki"};
char *word;
char *words[]={0};
int i=0;
word=strtok(str, " ");
while(word)
{
words=word;
i++;
}
int n = sizeof(words)/sizeof(words[0]);
i=0;
qsort((void *)
words,
n,
sizeof(words[0]),
compare
);
printf("\n pocle cort al:");
for(i=0; i<n; i++)
printf("\n words [%d] = %s",
i,words);
return;
}
С функцией strtok работаем немного иначе.
Не забываем задавать размер массиву.
char str[] = "Pippipipip pypypypypyp rararraarara draniki beliahiki";
char *word;
char *words[SIZE];
int i=0;
word=strtok(str, " ");
while(word)
{
words=word;
i++;
word=strtok(NULL, " ");
}
В i теперь имеем количество слов. Таким образом, строку
можно заменить на
Далее по тексту.
На Windows 2000 SP2 работает, а на Windows Server 2003 R2 не приходит ответ от устройства:
if(temp != 0) throw Exception("13",0);
[COLOR="DarkOrange"]ReadFile(handle, buf_out, 10, &numbytes_ok, &Overlap);[/COLOR]
if(WaitForSingleObject(Overlap.hEvent, 5000) == WAIT_TIMEOUT)
throw Exception("10",0);
После ReadFile(это первый ReadFile в ходе обмена) происходит вызов обработчика исключения по таймауту. Там где Windows Server 2003 R2, я тестировал на двух портах; и там и там одно и тоже.
Может для сервера следует использовать в ходе взаимодействия некоторые другие функции? Подскажите пожалуйста!
После ReadFile(это первый ReadFile в ходе обмена) происходит вызов обработчика исключения по таймауту.
Почему не проверяете ошибки?
После ReadFile
GetLastError() == ERROR_IO_PENDING, т.е. асинхронное чтение стартовало успешно.
При миграции приложений на Windows Server 2003 (а также клиентских приложений - на Windows XP) следует создать для каждого приложения файл "манифеста" - файл в XML-формате, имеющий расширение .man и содержащий перечисление всех необходимых для исполнения приложения файлов DLL с указанием их версий (в "манифесте" должны быть записаны те версии файлов DLL, которые использовались при разработке и тестировании приложения). При запуске на Windows Server 2003 исполняемого EXE-файла будут загружаться только указанные в манифесте версии DLL.
Но информации о создании этого манифеста не нашел...
Вам надо почитать в MSDN статьи Side-by-side assemblies и связанные.
есть надобность обработать неск. десятков страниц, скачиваемых программой из Сети. Есть массив элементов типа AnsiString со ссылками на нужные страницы и массив элементов типа TMemoryStream. Одна процедура сохраняет одну страницу в один поток. Есть цикл вызовов этой процедуры, по окончании которого, каждый элемент TMemoryStream содержит одну страницу. После обработки всех элементов нужно содержимое каждого переместить в элемент массива типа TStringList. Собственно проблема:
При попытке использовать
LoadFromStream();
говорит, что нужен указатель на TStream, а не TMemoryStream. При попытке создать массив типа TStream, говорит, что не может и что-то там про абстрактный класс.
Вопрос: Как перенести данные из одного массива в другой?
Не сохранять же 55 потоков в 55 файлов...
При попытке использовать
LoadFromStream();
чет я запутался. это чей метод, пишите вместе с именем класса
говорит, что нужен указатель на TStream, а не TMemoryStream.
не верю! (с) TMemoryStream - потомок TStream а значит может его подменить везде где требуется TStream.
не верю! (с) TMemoryStream - потомок TStream а значит может его подменить везде где требуется TStream.
уж поверь. Приведение типов никто не отменял. :) Аффтор на него забил - за что и наказан.
:eek: хде ты это увидел?! :) онж кода не привел? или у тебя пасутся стада телепатов под окном? :D
Лучшая практика по приведению типов: не делать этого. Потому что, если в программе потребовалось приведение типов, значит в этой программе с большой долей вероятности что-то неладно.
(С)Елена Сагалаева
Раз так, то я, похоже, некорректно подошёл к проблеме. Надо подумать ещё... Спасибо, КОТ!
TMemoryStream *Streams;
TStringList *Lists;
Streams=new TMemoryStream[33];
Lists=new TStringList[33];
Lists[0].LoadFromStream(Streams[0]);
Пишет:
Build
Cannot convert 'TMemoryStream' to 'TStream *'
Type mismatch in parameter 'Stream' (wanted 'TStream *', got 'TMemoryStream')
В чём же суть?
TMemoryStream *Streams;
TStringList *Lists;
Streams=new TMemoryStream[33];
Lists=new TStringList[33];
Lists[0].LoadFromStream(Streams[0]);
Пишет:
Build
Cannot convert 'TMemoryStream' to 'TStream *'
Type mismatch in parameter 'Stream' (wanted 'TStream *', got 'TMemoryStream')
В чём же суть?
он же пишет конкретно - "не могу привести ОБЪЕКТ TMemoryStream к УКАЗАТЕЛЮ TStream", т.к. ты передаешь в функцию объект, а не указатель. Разберись с массивами и указателями в С++
т.о.
Lists[0].LoadFromStream(Streams); //(Streams+0),(Streams+1) и т.д.
//(Streams+0), (Streams+1) и т.д.
не понял сути, сделал
Lists[0].LoadFromStream(&Streams[0]);