| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #30 : 10-04-2005 08:48 »  |  | 
 
 продолжу Тут же чтоб топ не создавать  Использую функцию  DWORD GetLogicalDriveStrings( DWORD nBufferLength,LPTSTR lpBuffer); Описание: lpBuffer-буфер для строки.  После вызова функции он будет содержать строку следующего формата: c:\#0d:\#0e:\#0#0  Почему у меня выдает лишь A:\  и все ?  Вот: void __fastcall TForm1::Button1Click(TObject *Sender){
 
 int max=1024;
 char* buff=new char[max];
 DWORD dAllDisks=GetLogicalDriveStrings(max,buff);
 if(dAllDisks)    {
 Edit1->Text=buff;
 }
 ............................................................
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| dimedrol 
								Помогающий    Offline | 
								|  | « Ответ #31 : 10-04-2005 08:56 »  |  | 
 
 А ты чем смотрел в режиме отладки Evaluate-ом(Watch)  или по адресу в памяти? Если первым, так после терминирующего нуля ничего видно не будет. ЗЫ   Вот если бы ты объявил массив: то тогда можно былоб посмотреть все содержимое. |  
						| 
								|  |  
								| « Последнее редактирование: 10-04-2005 10:49 от dimedrol » |  Записан | 
 
 Как говориться, cемь бед - один Reset   |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #32 : 10-04-2005 14:14 »  |  | 
 
 так не идет все равно выдается тока A:\  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| dimedrol 
								Помогающий    Offline | 
								|  | « Ответ #33 : 10-04-2005 20:46 »  |  | 
 
 Все, дошло. Я так понимаю ты смотришь строку в едите. Короче перед Edit1->Text=buff; вставь цикл забивающий лишние нули: int i;if(dAllDisks)    {
 for(i=0; i<1024-1; i++)
 if( buff[i]==0)
 {
 if(buff[i+1] != 0)
 buff[i] =(char) 0x20; //пробел
 else
 break;
 }
 Edit1->Text=buff;
 }
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Как говориться, cемь бед - один Reset   |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #34 :  14-04-2005 16:00 »   |  | 
 
 Круто работает     еще вопрос делаю поиск файлов и  вывод в Memo   Memo1->Lines->Add(FindFile.cFileName);1) когда список большой он в мемо не влазит как поступить ? 2) а как правильно искать чтоб находить тока файлы ?  я ищу вот так  HANDLE hFsearch=FindFirstFile("c:\\*.*", &FindFile);но так находит и файлы и папки  |  
						| 
								|  |  
								| « Последнее редактирование: 14-04-2005 19:13 от reconnector » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #35 : 14-04-2005 19:27 »  |  | 
 
 У тебя в FindFile есть поле dwFileAttributes. Делай отсев. т.е. if (FindFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ........;           //Это папка
 else ......................................................................................;           //Все остальное
 
 Кстати, для продолжения поиска ты вызываеш FindFirstFile?
 |  
						| 
								|  |  
								| « Последнее редактирование: 14-04-2005 19:31 от Finch » |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #36 : 15-04-2005 19:01 »  |  | 
 
 Да вызываю .........1) А как  получить имя первого найденного файла ?
 
 2)и можно ли посчитать нажатие кнопки  тоесть я нажимаю 1 раз получаю список файлов нажимаю еще 1 раз получаю опять тот же список как продолжение старого Как узнать что кнопка была нажата и на второй раз не произвести ни каких дейстивий ?
 |  
						| 
								|  |  
								| « Последнее редактирование: 15-04-2005 19:08 от reconnector » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #37 : 15-04-2005 19:22 »  |  | 
 
 reconnector, Как ты дружиш с английским? 1.  The WIN32_FIND_DATA structure describes a file found by the FindFirstFile or FindNextFile function. 
 typedef struct _WIN32_FIND_DATA { // wfd
 DWORD dwFileAttributes;
 FILETIME ftCreationTime;
 FILETIME ftLastAccessTime;
 FILETIME ftLastWriteTime;
 DWORD    nFileSizeHigh;
 DWORD    nFileSizeLow;
 DWORD    dwReserved0;
 DWORD    dwReserved1;
 TCHAR    cFileName[ MAX_PATH ];
 TCHAR    cAlternateFileName[ 14 ];
 } WIN32_FIND_DATA;
 
 
 Members
 
 dwFileAttributes
 
 Specifies the file attributes of the file found. This member can be one or more of the following values:
 
 Value   Meaning
 FILE_ATTRIBUTE_ARCHIVE
 The file is an archive file. Applications use this value to mark files for backup or removal.
 FILE_ATTRIBUTE_COMPRESSED
 The file or directory is compressed. For a file, this means that all of the data in the file is compressed. For a directory, this means that compression is the default for newly created files and subdirectories.
 FILE_ATTRIBUTE_DIRECTORY
 The file is a directory.
 FILE_ATTRIBUTE_HIDDEN
 The file is hidden. It is not included in an ordinary directory listing.
 FILE_ATTRIBUTE_NORMAL
 The file has no other attributes set. This value is valid only if used alone.
 FILE_ATTRIBUTE_OFFLINE
 The data of the file is not immediately available. Indicates that the file data has been physically moved to offline storage.
 FILE_ATTRIBUTE_READONLY
 The file is read-only. Applications can read the file but cannot write to it or delete it.
 FILE_ATTRIBUTE_SYSTEM
 The file is part of the operating system or is used exclusively by it.
 FILE_ATTRIBUTE_TEMPORARY
 The file is being used for temporary storage. Applications should write to the file only if absolutely necessary. Most of the file's data remains in memory without being flushed to the media because the file will soon be deleted.
 
 
 ftCreationTime
 
 Specifies a FILETIME structure containing the time the file was created. FindFirstFile and FindNextFile report file times in Coordinated Universal Time (UTC) format. These functions set the FILETIME members to zero if the file system containing the file does not support this time member. You can use the FileTimeToLocalFileTime function to convert from UTC to local time, and then use the FileTimeToSystemTime function to convert the local time to a SYSTEMTIME structure containing individual members for the month, day, year, weekday, hour, minute, second, and millisecond.
 
 ftLastAccessTime
 
 Specifies a FILETIME structure containing the time that the file was last accessed. The time is in UTC format; the FILETIME members are zero if the file system does not support this time member.
 
 ftLastWriteTime
 
 Specifies a FILETIME structure containing the time that the file was last written to. The time is in UTC format; the FILETIME members are zero if the file system does not support this time member.
 
 nFileSizeHigh
 
 Specifies the high-order DWORD value of the file size, in bytes. This value is zero unless the file size is greater than MAXDWORD. The size of the file is equal to (nFileSizeHigh * MAXDWORD) + nFileSizeLow.
 
 nFileSizeLow
 
 Specifies the low-order DWORD value of the file size, in bytes.
 
 dwReserved0
 
 Reserved for future use.
 
 dwReserved1
 
 Reserved for future use.
 
 cFileName
 
 A null-terminated string that is the name of the file.
 
 cAlternateFileName
 
 A null-terminated string that is an alternative name for the file. This name is in the classic 8.3 (filename.ext) filename format.
 
 2. Объясни чуть подробнее. Первое что приходит в голову. Ставь счетчик. При каждом нажатии делай инкремент его.
 
 Насчет продолжения поиска не понял. тоже поподробнее как ты делаеш?
 
 
 Remarks
 
 If a file has a long filename, the complete name appears in the cFileName field, and the 8.3 format truncated version of the name appears in the cAlternateFileName field. Otherwise, cAlternateFileName is empty. As an alternative, you can use the GetShortPathName function to find the 8.3 format version of a filename.
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 20-12-2007 18:28 от Алексей1153++ » |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #38 : 15-04-2005 19:27 »  |  | 
 
 2. Чуть поподробней можеш объяснить. По идее ставится счетчик, при каждом нажатии просто делается инкреминирование.
 И дай пожалуйста полный код, как ты производиш дальнейший поиск.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #39 : 16-04-2005 16:07 »  |  | 
 
 Вот :  void __fastcall TForm1::Button1Click(TObject *Sender){
 WIN32_FIND_DATA    FindFile;
 HANDLE     hFndF=FindFirstFile("c:\\*.*", &FindFile);
 DWORD     Folder=FindFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
 
 
 if (hFndF!=INVALID_HANDLE_VALUE)
 {
 do
 {      if (!Folder)
 {Memo1->Lines->Add(FindFile.cFileName );  }
 }
 
 while (FindNextFile(hFndF,&FindFile)!=0);
 FindClose(hFndF);
 }
 }
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #40 : 16-04-2005 16:25 »  |  | 
 
 Что то со скобками напутано. Из контекста выдрано? |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #41 : 16-04-2005 17:04 »  |  | 
 
 Да это может Тут я ео редактировал потому что у меня написано  так   if (hFndF!=INVALID_HANDLE_VALUE){do{if(!Folder){Memo1->Lines->Add(FindFile.cFileName );}}while (FindNextFile(hFndF,&FindFile)!=0);
 FindClose(hFndF);
 }
 }
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #42 : 16-04-2005 17:41 »  |  | 
 
 А чему у тебя равно Folder  в цикле. Вроде ты его не изменяеш в цикле. |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #43 : 17-04-2005 08:03 »  |  | 
 
 Folder  у меня для того чтоб папки не находить  а тока файлы  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #44 : 17-04-2005 17:37 »  |  | 
 
 Посмотри внимательно цикл. В том виде, что ты представил на суд публики, у тебя Folder Величина постоянная. Или он тебе будет вытаскивать все, Или вообше ничего. Да вначале проги фолдер инициализируется первой встретившейся записью. А затем на протяжении цикла, она и равна первому значению. Если ты будеш смотреть диск c:\ То как правило там первая запись в каталоге это файл. Вот и ты получаеш список всего. |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #45 : 21-04-2005 20:23 »  |  | 
 
  а как проверить  что я получил первое папку или файл из каталога диска ? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #46 : 22-04-2005 16:29 »  |  | 
 
 HANDLE     hFndF=FindFirstFile("c:\\*.*", &FindFile);DWORD     Folder;
 if (hFndF!=INVALID_HANDLE_VALUE)
 {
 do    {
 Folder=FindFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
 if (!Folder) Memo1->Lines->Add(FindFile.cFileName );
 }  while (FindNextFile(hFndF,&FindFile)!=0);
 FindClose(hFndF);
 }
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #47 : 23-04-2005 20:18 »  |  | 
 
 как прочитать(а точнее показать внормальной кодировке ) файл Досовской кодировки в Виндовс? читал так но  результат иероглифы    HFILE hOpFle= _lopen("C:\\BFA.txt",OF_READ);//открываю для чтения
 DWORD uBtRead=1024;
 //char *uBuff=new char[max];
 unsigned char uBuff[1024];
 _lread(hOpFle,uBuff,uBtRead);//читаю в буфер
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #48 : 24-04-2005 20:20 »  |  | 
 
 Кому интересно   hOpenF = _lopen(fBuff,OF_READ);_lread(hOpenF,unBuff,bLength);
 OemToCharBuff(unBuff,unObuff,bLength);
 Memo1->Text=unObuff;
 _lclose(hOpenF);
 так читает    |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #49 : 26-04-2005 17:39 »  |  | 
 
 Вопрос как узнать  где запустилась программа ? на каком диске в какой папке ?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #50 : 27-04-2005 12:48 »  |  | 
 
 The GetCurrentDirectory function retrieves the current directory for the current process. 
 DWORD GetCurrentDirectory(
 
 DWORD nBufferLength,   // size, in characters, of directory buffer
 LPTSTR lpBuffer    // address of buffer for current directory
 );
 
 
 Parameters
 
 nBufferLength
 
 Specifies the length, in characters, of the buffer for the current directory string. The buffer length must include room for a terminating null character.
 
 lpBuffer
 
 Points to the buffer for the current directory string. This null-terminated string specifies the absolute path to the current directory.
 
 
 
 Return Values
 
 If the function succeeds, the return value specifies the number of characters written to the buffer, not including the terminating null character.
 If the function fails, the return value is zero. To get extended error information, call GetLastError.
 If the buffer pointed to by lpBuffer is not large enough, the return value specifies the required size of the buffer, including the number of bytes necessary for a terminating null character.
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #51 : 27-04-2005 12:49 »  |  | 
 
 Да кстати, длину строки на всякий случай желательно делать равной MAX_PATH |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| reconnector 
								Гость
 | 
								|  | « Ответ #52 : 30-04-2005 11:07 »  |  | 
 
 А можно обратиться к ..... короче так событие  ..........TForm1::Button1Click(TObject *Sender){ int Code;}// Можно ли из другого события обратится  к  этому а конкретней к переменной Code?
 //_____________________________________
 ....... TForm1::Button2Click(TObject *Sender)
 {TForm1::Button1Click(Button1);} //так можно :)
Наверно всетаки нельзя   |  
						| 
								|  |  
								| « Последнее редактирование: 30-04-2005 12:55 от reconnector » |  Записан | 
 |  |  | 
	| 
			| 
					
						| FoKas 
								Новенький    Offline | 
								|  | « Ответ #53 : 02-05-2011 10:23 »  |  | 
 
 У меня тоже эта же ошибка,не ведаю как исправить.  float maxY=-99999999999,minY=999999999,srY,maxX,minX,srX,maxZ,minZ,srZ;
 for(int i=0;i<t*2;i+=2)      //перебираем грани
 {
 int nachalo=sv2[i];
 int v=vidimost(nachalo,sv1,buf3,p3); //видима ли грань
 if (v==1) //если видима то выполняем
 {
 for (int j=sv2[i];j<sv2[i+1]+1;j++) //перебираем точки грани
 {
 if(bufer[(sv1[j]-1)*4+1]>maxY) //находим точку с макс. коор.У
 {
 maxY=bufer[(sv1[j]-1)*4+1];
 maxX=bufer[(sv1[j]-1)*4+0];
 maxZ=bufer[(sv1[j]-1)*4+2];
 }
 if(bufer[(sv1[j]-1)*4+1]<minY) //Находим точку с мин.коор.У
 {                                           ---//--
 minY=bufer[(sv1[j]-1)*4+1];//<-----------------тут ошибка
 minX=bufer[(sv1[j]-1)*4+0];
 minZ=bufer[(sv1[j]-1)*4+2];
 }
 }
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #54 : 02-05-2011 11:10 »  |  | 
 
 FoKas, покажи определение buffer.И что за хрень у тебя на предыдущей ошибке строке?... Это не SQL - такой комментарий недопустим.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| FoKas 
								Новенький    Offline | 
								|  | « Ответ #55 : 02-05-2011 11:51 »  |  | 
 
 FoKas, покажи определение buffer.И что за хрень у тебя на предыдущей ошибке строке?... Это не SQL - такой комментарий недопустим.
 
 Ты прав,из-за этого "комментария" ничего не работало.Я как-то не подумал,когда его поставил)))) Теперь запускается |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |