компьютерный форум
Вернуться   Компьютерный форум > Программирование и вебстроительство > Программирование

Ответ
 
LinkBack Опции темы Опции просмотра
Старый 03.11.2011, 18:10   #1
Пользователи
 
Регистрация: 06.05.2011
Сообщений: 4
По умолчанию обращения к члену связного списка

Прошу помощи в решении

Стоит задача обращения к члену связного списка(того списка что выводится на экран файлового менеджера),затем с этим членом св.списка(это имя файла,папки-длинное имя-) производится
такая операция-он указывается как член другого связного списка(по строке) чтобы вывести целиком длинное имя
и посчитать символы если=250 то вывести имено эти имена(максимальной длинны)

Для начала приведу две независимые функции

№1
//выводит список файлов на panel с указателя Ptr
//в направлении Directly (0-вниз, 1-вверх)
//если выводится на экран новая директория, передается флаг FlagFirst
void DrawList(int panel, ListNode far *Ptr, int Directly, int FlagFirst)
{
int kol=0, x, y, flag=1, can;
char s[37];

if (panel==LEFT) x=12;
else x=331;
if (Directly==DOWN) y=30; else y=282;
setcolor(LIGHTGREEN);

NewPtr=Ptr;
while (NewPtr != NULL && kol<19)
{
if (NewPtr->attrib != 0x0F) //здесь ставлю ==
{
if (CAN(NewPtr))
{
if (FlagFirst && flag)
if (panel==LEFT) {CurPtrL=NewPtr; flag=0;}
else {CurPtrR=NewPtr; flag=0;}
movedata(FP_SEG(NewPtr->Data), FP_OFF(NewPtr->Data), FP_SEG(s), FP_OFF(s), 37);
outtextxy(x,y,s);
if (Directly) y-=14; else y+=14;
kol++;
}
}
if (Directly) NewPtr = NewPtr->PrevPtr;
else NewPtr = NewPtr->NextPtr;
}
}
после замены в строке 14 != на == ф.DrawList выводит на панель
чтото вроде

Мои документы
Program Files
sistema_siste
ma_sistema_
sistema_siste
ma

короче фигачит длинные имена по 13 симв построчно(там задано при обработке длинных имен)

вот функция №2

void ShowLongName()
{
char s[37]="", rez[100]="";

NewPtr=CurPtr->PrevPtr;
while (NewPtr->attrib==0x0F)
{
movedata(FP_SEG(NewPtr->Data), FP_OFF(NewPtr->Data),
FP_SEG(s), FP_OFF(s), 37);
strcat(rez,s);
NewPtr=NewPtr->PrevPtr;
}
setfillstyle(SOLID_FILL, FON);
bar(110,319,632,329);
setcolor(LIGHTCYAN);
if (strlen(rez)>65) rez[68]=0x0;
outtextxy(112,321,rez);
}
эта функция при наведении строчного курсора в определенном месте показывает длинное имя целиком
sistema_sistema_sistema_sistema_sistema

я такую создал функцию

void DrawList2(int panel, ListNode far *Ptr, int Directly, int FlagFirst)
{
int kol=0, x, y, flag=1, can;
char s[37]="", rez[255]="";
if (panel==LEFT) x=12;
else x=331;
if (Directly==DOWN) y=30; else y=282;
setcolor(LIGHTGREEN);


NewPtr=Ptr;
while (NewPtr != NULL && kol<19)
{
if (CAN(NewPtr))
{
if (NewPtr->attrib == 0x0F)
{

if (FlagFirst && flag)
if (panel==LEFT) {CurPtrL=NewPtr; flag=0;}
else {CurPtrR=NewPtr; flag=0;}


NewPtr=CurPtr->PrevPtr;
while (NewPtr->attrib==0x0F)
{
movedata(FP_SEG(NewPtr->Data), FP_OFF(NewPtr->Data),
FP_SEG(s), FP_OFF(s), 37);
strcat(rez,s);
NewPtr=NewPtr->PrevPtr;
}

if (strlen(rez)==250)
outtextxy(x,y,rez);

if (Directly) y-=14; else y+=14;
kol++;
}
}
if (Directly) NewPtr = NewPtr->PrevPtr;
else NewPtr = NewPtr->NextPtr;
}
}
так вот она при вызове работает но не так как требуется-она не делает поиск
по членам списка отдельно в цикле,а только лишь принаведении строчного курсора
на длиное имя и вызове функции (предусмотрена кнопка) она для этой строки(имени файла папки)
соединяет куски длинного имени в строку и считает ==250(?)
а требуется открыть диск С,D либо папку- нажатие кнопки-и функция выводит найденное
длинное имя=250
надеюсь все подробно объяснил
прошу помочь если что весь код проги есть для Borland C++3.1




soad33 вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
03.11.2011, 18:10
Техник
реклама
По умолчанию обращения к члену связного списка

Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.



Текущее время: 18:07. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot
Content Relevant URLs by vBSEO 3.5.0 RC2