Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2011, 22:04   #1
soad33
Новичок
Джуниор
 
Регистрация: 03.11.2011
Сообщений: 1
По умолчанию обращениe к члену связного списка

Стоит задача обращения к члену связного списка(того списка что выводится на экран файлового менеджера),затем с этим членом св.списка(это имя файла,папки-длинное имя-) производится
такая операция-он указывается как член другого связного списка(по строке) чтобы вывести целиком длинное имя
и посчитать символы если=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_sis tema

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

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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание связного списка на Си zx11 Общие вопросы C/C++ 9 17.03.2014 00:54
Стек на базе одностороннего связного стека foldel Помощь студентам 1 22.09.2011 21:23
Обращение к члену класса _ILYA_ Visual C++ 2 13.10.2010 19:28
Генерация связного графа andis Помощь студентам 6 23.01.2010 15:46
сортировка узлов связного списка pavelstraut Общие вопросы C/C++ 5 28.07.2009 23:27