TSearchRec; wtf? TSearchRec Dir путь до папки в которой будем искать? Да. filename:=Dir + SearchRec.name; а файл нейм не надо объявлять?:О Данный кусок кода filename:=Dir + SearchRec.name; меняешь на свое усмотрение. [img] В SearchRec.name находится имя файла.
а то что про размер окна не помогает.... [IMG] ооо точно... ответили уже, ток там не на этот вопрос..... procedure ScanDir(Dir: string); var SearchRec: TSearchRec; begin if Dir <> '' then // Если переменная dir не пустая if Dir[length(Dir)] <> '\' then // то проверяем если в конце строки нет слеша Dir := Dir + '\'; // то добавляем его if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then // Начинаем искать все файлы в директории, если хоть что-то есть repeat // то начинаем цикл if (SearchRec.name = '.') or (SearchRec.name = '..') then // если нашли . или .. continue; // пропускаем их { надо просто убрать рекурсию по подкаталогам if (SearchRec.Attr and faDirectory) <> 0 then // если нашли папку ScanDir(Dir + SearchRec.name) // функция вызывает сама себя для прохода найденной папки else // если нет, то } filename:=Dir + SearchRec.name; // тут писать то, что нужно делать с найденным файлом (заносить в массив) until // продолжаем цикл FindNext(SearchRec) <> 0; // пока не закончатся файлы папки FindClose(SearchRec); // закрываем поиск файлов end; // аминь
Ты гений) Альт + Ентер... не на столько же я туп... и не зря же я написал на Windows 7.... Тогда ПКМ на заголовке окна -> Свойства -> Расположение -> Размер окна. Меняй высоту и ширину :D Хм.... как получить название всех файлов в папке?:huh: Например у меня есть папка tests и есть массив a стринговый.... мне надо названиявсех файлов папки tests запихать в массив) Тебе уже ответили
Смотри... вот chr(49) это 1 ...... chr(57) это 9 , а как 10,11,12.... ? А где на клаве кнопки 10, 11, 12 ?) :D Почему на Windows 7 Turbo Pascal не пашет во весь экран?:huh: И можно ли както это поправить?:) Alt+Enter
// Я скачал Free pascal, ибо турбо под х64 не пашет, а ставить виртуалку было в падлу :D Особо копаться не стал и просто сделал вывод скан кода :huh: program ScanKey; uses crt; var Key: char; begin Write('Press key: '); Key:=ReadKey; if(Key=#0) then begin WriteLn('Extended key pressed'); Key:=ReadKey; end; WriteLn('Pressed key: "', Key, '"; Code: "', Ord(Key), '"'); end.
а чтобы выделял цветом в меню .. я сам сделаю :huh: Textbackground - цвет фона у текста (передается стандартная константа или целое число) Textcolor - цвет текста (передается стандартная константа или целое число) TextColor(Yellow); WriteLn('This text is "Yellow"'); TextColor(Red); WriteLn('This text is "Red"'); This text is "Yellow" будет выведено желтым цветом This text is "Red" будет выведено красным цветом Подробнее - Lesson 3 - Special Reserved Words of the CRT Unit: ClrScr(), GotoXy(), etc. там еще где меню.. .надо будет курсор убрать... но эт я сам :) cursoroff - спрятать курсор cursoron - показать курсор cursorbig - показать большой курсор :D
Вот, перекомпилил под х32. [ATTACH]
Охх... По порядку. Программа та, компилированная у меня не запускается :) из-за версии винды =-\\ Да, с программкой накосячил, она для х64 :D MenuIndex: integer = 0; тут пишет синтаксическую ошибку.... Напиши просто var MenuIndex: integer; ... begin MenuIndex:=0; while(true) do begin ... end. То же самое с массивом: var MenuItems: array[0..4] of integer; MenuItemsText: array[0..4] of string; ... begin MenuIndex:=0; MenuItems[0]:=MENU_RUN; MenuItems[1]:=MENU_LOAD; MenuItems[2]:=MENU_SAVE; MenuItems[3]:=MENU_ABOUT; MenuItems[4]:=MENU_EXIT; MenuItemsText[0]:=MENU_RUN_TEXT; MenuItemsText[1]:=MENU_LOAD_TEXT; MenuItemsText[2]:=MENU_SAVE_TEXT; MenuItemsText[3]:=MENU_ABOUT_TEXT; MenuItemsText[4]:=MENU_EXIT_TEXT; while(true) do begin ... end. Да, говнокод ;) но для примера сойдет :huh: и еще) извини конешно что я наглею) а там пользователь сам видит какой пункт меню он выбрал? Так и быть, извиню :) Да, пункт меню выделен "> " if(MenuIndex=i) then Write('> '); WriteLn(MenuItemsText[i]); Первая строка. Если выбран данный (i) элемент меню, то перед ним выводим "> " И еще вопросик... unit MenuDef; interface что значит юнит?:( и интерфейс.. Юнит - модуль (библиотека, etc.). В нем могут находиться функции, процедуры, переменные и т.д, необходим для разбивки сорцов на несколько файлов, что бы не писать все в мэйн файле (выглядит красивее, более удобная навигация, отлов ошибок и т.д) Про все это можно почитать, например, Здесь
Эх, отменилась пьянка :( Так что вот - [ATTACH]. Пароль на архив: mmorpg-devs.ru ;) Файлы: compiled/menu.exe - скомпилированная программка для быстрого просмотра того, что я сделал :D sources/menu.pas - основной код программы sources/MenuDef.pas - Дефайны для программы (константы, глобальные переменные и т.д) sources/MenuFuncs.pas - процедуры для обработки меню (т.е процедуры, вызываемые при выборе меню) Почему разбил на несколько файлов :) - не люблю громоздкого кода :huh: Если что - спрашивай :)
{ @params: Path - путь до файла Line - номер строки, которую надо считать. } function GetFLine(Path: string; Line: integer): string; var F: Text; // Переменная для файла i: integer; // номер текущей строки begin GetFLine:=''; // Инициализация переменной, которая возвращает результат Assign(F, Path); // Создаем дескриптор на файл (т.е присваиваем файловой переменной путь до файла (грубо говоря)) Reset(F); // открываем файл для чтения for i:=0 to Line do begin // цикл с считыванием строк до тех пор, пока не считаем нужную if(EOF(F)) then break; // EOF - функция для проверки того, считали ли мы весь файл, или нет (возвращает TRUE, если достигнут конец файла) ReadLn(F, GetFLine); // считываем строку end; Close(f); // закрываем файл end; Так правильнее :) Просто писал утром, ещё не до конца проснувшись. По поводу меню - заводи переменную-индекс. К примеру, у нас 4 пункта меню - НАЧАТЬ СОХРАНИТЬ ЗАГРУЗИТЬ ВЫЙТИ Заводим переменную-индекс (в ней хранится текущий итем меню) var Index: integer = 0; // по дефолту - первое меню При нажатии вниз просто увеличиваем размер Index на один, а при нажатии вверх - уменьшаем (не забываем про проверу на выход за пределы меню) При нажатии на энтер проверяй, чему равно значение Index и вызывай соответствующую процедуру (к примеру, 0 - Начать, 2 - Загрузить и т.д) Вот и всё :D P.S: если приду в более-менее вменяемом состоянии, накатаю пример на Turbo Pascal. P.S.S: На x64 турбо не пашет :) Так что качаю Free Pascal :huh:
1: Предположим у меня есть вот такой txt файл ... Как мне из этого файла взять только опредленную строчку? например первую? function GetFLine(Path: string; Line: integer); var F: Text; i: integer; begin Assign(F, Path); Reset(F); for i:=0 to Line do begin if(EOF(F)) then break; ReadLn(F, GetFLine); end; Close(f); end; ReadLn - чтение построчно :D Тут были дискуссии по поводу управления мышкой в главном меню в программе на паскале.... я на это забил... и теперь хочу спросить у вас, как сделать управление с клавиатуры? Работа с клавиатурой. Стандартные процедуры read и readLn. Стандартные функции readKey и KeyPressed; их применение в циклах
?? ??? ? ? ???? ??????... =)
Softtime -Уучебник по PHP, как вариант.
Да тож там плюсами... А запятыми разделяются переменные, передаваемые функции / процедуре.
Декомпилировать - никак. Можно дизассемблировать, кусок кода на асме ты уже выложил. Это и есть "исходник" программы :lol: А вот трансляторы asm=>C++, Pascal, etc в сети можно найти. Но качество у них оставляет желать лучшего... :D
Ахах, одинаковые линки дал... :lol: Извини, ночь не спал :D Вот, Почитай. Ну, и гугл можно спросить более точно, тем более, я дал названия типов (множество и массив)
Не помню я точно, вроде массив и перечисление :D // upd: Множество vs Массив
//Оффтоп: Ещё б не запустилось :D
function TForm1.IsItLolz(s: string): boolean; begin Result:=false; if(s[1] in ['a', 'b', 'c', 'd', 'e']) then Result:=true; end; Типы разные.
Имена участников (разделяйте запятой).