→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ 1 сообщение ] 
обращения к члену связного списка 
Автор Сообщение
Начинающий

Регистрация: 06.05.2011
Сообщения: 2
Языки:
Специальность:

Репутация: 0 [ ? ]
Сообщение обращения к члену связного списка
Прошу помощи в решении

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


03.11.2011 21:00
Профиль Отправить email
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 


Кто сейчас на конференции

Зарегистрированные пользователи: Google [Bot]


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

Перейти:  
cron
© 2013 «Форум программистов Украины»