HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 29.07.2009, 13:47
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
С нами: 9679872

Репутация: 347
По умолчанию

Цитата:
Сообщение от SeNaP  
Проблема такая.
Как проверить на существоание дериктории, если она есть, то определить путь.
Помогите пожалуйсто
надеюсь, ты имеешь в виду исходя из пути к папке проверить ее наличие.
Конечно можно проверить существование какой-то директории без пути к ней, но ведь же рекурсивный поиск юзать для этого надо.
а в первом случае подойдет такой код:
Код:
#include <stdio.h>
#include <windows.h>

int exist_directory(const char* path)
{
	WIN32_FIND_DATA find_data;
	HANDLE find_handle;
	
	if((find_handle = FindFirstFile(path, &find_data)) == INVALID_HANDLE_VALUE) {
		return 0;
	} else {
		FindClose(find_handle);
		return 1;
	}
}

int main(int argc, char** argv)
{
	if(argc < 2) return EXIT_FAILURE;
	if(exist_directory(argv[1])){
		printf("exist\n");
	} else {
		printf("not exist\n");
	}
	return 0;
}
P.S. да, это только для как бы win-систем

Последний раз редактировалось bons; 29.07.2009 в 13:50..
 
Ответить с цитированием

  #2  
Старый 29.07.2009, 01:21
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
С нами: 9017461

Репутация: 414


По умолчанию

Если unix like система, то смотри man readdir
 
Ответить с цитированием

  #3  
Старый 29.07.2009, 14:05
SeNaP
Участник форума
Регистрация: 07.08.2008
Сообщений: 281
С нами: 9347610

Репутация: 165
По умолчанию

bons, спс, щас буду сидеть разбираться ))

ЗЫ: Кто может ссылку дать, на сорцы кокого нибудь вирус, который сам распростроняется, чисто для изучения

Последний раз редактировалось SeNaP; 29.07.2009 в 14:19..
 
Ответить с цитированием

  #4  
Старый 29.07.2009, 14:47
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
С нами: 9705420

Репутация: 21
По умолчанию

После пары мучительных дней, я все же добил однонаправленные списки. У меня вышло создать список, просмотреть его, искать в нем нужные данные, удалить полностью весь список, удалить конкретный узел списка, добавить новый узел в конец списка, добавить новый узел в любую другую позицию, сортировать его по данным и номерам узлов. Для этого использовал все свои знания.

Если кому не лень - проанализируйте плз мои труды и посоветуйте, что можно было бы сделать иначе, то есть оптимальнее:
исходник - cpp
готовый exe файл программы

З.Ы. Сообщение о вирусе игнорируйте, так как это мой сайт и я даю гарантию в 100% о безопасности файлов.

Последний раз редактировалось horlyk; 29.07.2009 в 14:57..
 
Ответить с цитированием

  #5  
Старый 29.07.2009, 16:08
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами: 10386906

Репутация: 599


По умолчанию

рекомендация простая - у тебя получилась модульная программа, только заменой модулей на классы. как таковой класс списка не выполняет роль управления списком. точнее он управляет всеми подряд списками. и код, который использует этот класс списка, обязан знать все детали реализации класса Node, хотя вся задача класса List в том, чтобы никто не знал, как он реализован.
Вот тебе простые условия, чтобы список стал нормальным членом ОО общества:
1) Список не должен принимать в паблик методах параметры типа Node
2) Список не должен возвращать в паблик методах параметры типа Node
3) Так как класс List управляет списком, почему среди его членов даннхы нету собственно списка? Точнее головы
4) Работу с вводом-выводом вынеси в отдельный класс. Назови его ListMenu или на свое усмотрение, но в классе списка не должно быть методов, которые не связаны с управлением сущностью.

Ну а так для начала вполне неплохо(в том смысле что это работает =) )
 
Ответить с цитированием

  #6  
Старый 29.07.2009, 16:48
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
С нами: 9705420

Репутация: 21
По умолчанию

Ra$cal, еще раз спасибо за советы и за потраченное время на разборку кода моей программы

З.Ы. тоесть получается я еще не понимаю преимущества ооп. Что можно почитать чтоб понять чем оно лучше?

Последний раз редактировалось horlyk; 29.07.2009 в 17:08..
 
Ответить с цитированием

  #7  
Старый 29.07.2009, 17:44
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
С нами: 9017461

Репутация: 414


По умолчанию

Все что в хэдэре заключи в такую конструкцию:
Код:
#ifndef _MB_H_
#define _MB_H_

....

#endif  /* _MB_H_  */
 
Ответить с цитированием

  #8  
Старый 29.07.2009, 18:41
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

ты проверь, возможно ты файл mb.h пытаешься компилить также как и други cpp файлы
 
Ответить с цитированием

  #9  
Старый 29.07.2009, 21:04
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами: 10386906

Репутация: 599


По умолчанию

horlyk
ну это простое правило нужно и можно усвоить и без книг. Если ты делаешь класс - снабди его ровно тем поведением, которое будет ожидать от него человек, увидев имя класса. Вот ты делал список - я ожидал там видеть управление данными. Никаких меню. Ожидал что работать буду так

List list1;
list1.add(name, age);
list1.add(name2, age2);
list1.remove(name1);
list1.sort();
единственный метод, который можно добавить ради простоты - метод view. Хотя на самом деле делается это введением доп класса или снабжением списка например итераторами.

Чтобы понять в общем смысле суть представь, что ты купил машину. Но чтобы на ней ехать тебе надо открыть капот, впрыснуть в карбюратор немного бензина, залезть в кпп и добавить шестеренки, отрегулировать дифференциал... Суть - скрыть ВСЕ, что мешает абстракции. Нажал кнопочку - все сделалось само. Сработал стартер, в карбюратор бензин, искра - завелись. Как на самом деле все это работает - тебя не трогает. Плюс делать вещь должна ровно то, о чем говорит название. Врядли ты обрадуешься, если машина помимо езды еще и мусор собирает, и селедку возит. МОжет конечно это тебе и пригодится, но это лишняя сложность. Или называй машину как селедковоз с мусоросборкой, чтобы знать, чего ожидать, или разбей все фичи на отдельные устройства. Так же в программах =)
Очень простой признак говняности кода - слишком длинные приготовления для работы с классом. В твоем примере это создание Node'ов при любом действии со списком. Логичнее же все повторяющиеся места пихнуть в класс и оставить только вызов метода.
У тебя это не так очевидно ибо список, как уже упоминалось выше, делает помимо управления списком и весь клиентский код
 
Ответить с цитированием

  #10  
Старый 29.07.2009, 22:26
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
С нами: 9705420

Репутация: 21
По умолчанию

То есть, получается нужно чтобы был создан класс List, в нем были все методы управления списком - добавления, удаления, сортировки и т.д. и объект другого класса, то есть класса Node - голова. Это все вынести в отдельный хедер и из мейна управлять так, как ты и описал:
List list1;
list1.add(name, age);
list1.add(name2, age2);
list1.remove(name1);
list1.sort();
и открыть для общего доступа только главные, не вспомогательные методы.
Следовательно ООП подразумевает простоту использования объектов и их методов для конечного пользователя. Я правильно понял?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...