Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: [C++ Error] E2277 Lvalue required  (Прочитано 86009 раз)
0 Пользователей и 1 Гость смотрят эту тему.
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
Помогающий

ru
Offline Offline

« Ответ #31 : 10-04-2005 08:56 » 

А ты чем смотрел в режиме отладки Evaluate-ом(Watch)  или по адресу в памяти? Если первым, так после терминирующего нуля ничего видно не будет.

ЗЫ
  Вот если бы ты объявил массив:
Код:
  char buff[1024];
то тогда можно былоб посмотреть все содержимое.
« Последнее редактирование: 10-04-2005 10:49 от dimedrol » Записан

Как говориться, cемь бед - один Reset Улыбаюсь
reconnector
Гость
« Ответ #32 : 10-04-2005 14:14 » 

так не идет все равно выдается тока A:\
Записан
dimedrol
Помогающий

ru
Offline 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
Спокойный
Администратор

il
Offline 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
Спокойный
Администратор

il
Offline 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
Спокойный
Администратор

il
Offline 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
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #40 : 16-04-2005 16:25 » 

Что то со скобками напутано. Из контекста выдрано?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
reconnector
Гость
« Ответ #41 : 16-04-2005 17:04 » new

Да это может Тут я ео редактировал потому что у меня написано  так
Код:
if (hFndF!=INVALID_HANDLE_VALUE)
   {do{if(!Folder){Memo1->Lines->Add(FindFile.cFileName );}}while (FindNextFile(hFndF,&FindFile)!=0);
FindClose(hFndF);
}
}
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #42 : 16-04-2005 17:41 » 

А чему у тебя равно Folder  в цикле. Вроде ты его не изменяеш в цикле.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
reconnector
Гость
« Ответ #43 : 17-04-2005 08:03 » 

Folder  у меня для того чтоб папки не находить  а тока файлы
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #44 : 17-04-2005 17:37 » 

Посмотри внимательно цикл. В том виде, что ты представил на суд публики, у тебя Folder Величина постоянная. Или он тебе будет вытаскивать все, Или вообше ничего. Да вначале проги фолдер инициализируется первой встретившейся записью. А затем на протяжении цикла, она и равна первому значению. Если ты будеш смотреть диск c:\ То как правило там первая запись в каталоге это файл. Вот и ты получаеш список всего.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
reconnector
Гость
« Ответ #45 : 21-04-2005 20:23 » 

 а как проверить  что я получил первое папку или файл из каталога диска ?
Записан
Finch
Спокойный
Администратор

il
Offline 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
Спокойный
Администратор

il
Offline 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
Спокойный
Администратор

il
Offline 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
Новенький

ru
Offline 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
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #54 : 02-05-2011 11:10 » 

FoKas, покажи определение buffer.
И что за хрень у тебя на предыдущей ошибке строке?... Это не SQL - такой комментарий недопустим.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
FoKas
Новенький

ru
Offline Offline

« Ответ #55 : 02-05-2011 11:51 » 

FoKas, покажи определение buffer.
И что за хрень у тебя на предыдущей ошибке строке?... Это не SQL - такой комментарий недопустим.
Ты прав,из-за этого "комментария" ничего не работало.Я как-то не подумал,когда его поставил))))
Теперь запускается
Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines