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

Форум программистов: 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 сообщение ] 


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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