Доброе время суток, Byter! IMHO в дельфи (и вообще в паскале) это невозможно...
*** E-Man 1.5 (edition 04) - life is just a game...if you a student:) ***
Ответ отправлен: 21.09.2003, 23:20 Отправитель: _vt Отвечает Cybernetic Creature
Доброе время суток, Byter! procedure MyProc(A,B:Integer; Neobyazateln:Real=12.3); .................
Ответ отправлен: 22.09.2003, 15:28 Отправитель: Cybernetic Creature Отвечает ART_43
Приветствую Вас, Byter! procedure proc(var1:integer;var2:integer=1):integer; var1 - обязательный var2 - необязательный, по умолчанию равен 1 Ответ отправлен: 22.09.2003, 13:56 Отправитель: ART_43 Отвечает sir henry
Здравствуйте, Byter! 1. Все необязательные параметры должны быть в конце списка параметров. 2. Всем необязательным параметрам присвоить какое-нибудь значение, тогда их можно будет не указывать. 3. Если заранее не известно, какое количество параметров передавать в функцию, то можно передать открытый массив и кол-во элементов или указатель на массив (коллекцию). Ответ отправлен: 22.09.2003, 06:16 Отправитель: sir henry Отвечает Marouder
Здравствуйте, Byter! Ты указывай, Delphi или C++Builder у тебя. В Delphi - кажется никак. Можно решить проблему созданием двух overload функций или процедур, типа: function Func(x,y:Real):Real;overload; function Func(x:Real):Real;overload; А на C++ надо делать так: int Func1(int x,int y=0) Тогда "y" будет необ. параметром и по умолчанию равняться 0.
Ответ отправлен: 22.09.2003, 08:09 Отправитель: Marouder Отвечает vitya
Доброе время суток, Byter! так как вы не написали, у вас delphi и BCB, то я отвечу на случай BCB: int MyFunc(int A, double d, char ch = 'a'); ... int MyFunc(int A, double d, char ch /*= 'a'*/) { ///реализация } ... //вызов MyFunc(1, 4.5, 'd'); //вызов параметра MyFunc(1, 5.4); //дефолтный параметр... Ответ отправлен: 22.09.2003, 09:17 Отправитель: vitya Отвечает THE_PRO
Приветствую Вас, Byter! procedure click(i:integer;const s='string1'); begin click(15); click(15,'string2'); end; Ответ отправлен: 24.09.2003, 09:49 Отправитель: THE_PRO
Вопрос № 949
Здравствуйте эксперты! Я по поводу вопроса №933: "Имеется база *.mdb(для Access'97) хочеться организовать доступ к ней из программы на C++Builder". Bob Johnson - спасибо за ответ, но это немножко не то! Дело в том, что я забыл уточнить, что программу надо писать обязательно в C++B3 или 4, а когда я открыл Архангельского, то прочитал, что возможность использовать ADO появилась только в C++B5. Поэтому задаю вопрос еще раз, как можно сделать, то что прошу? Предупреждаю, я и в С++B5 и в БД, практически полный нуль пока, поэтому, если можно, то подробней обясните, откуда рыть начинать!? :) С уважением, ILYA D.
Добрый день, ILYA D.! Luchshe kupi BCB6 Ответ отправлен: 24.09.2003, 09:47 Отправитель: THE_PRO
Вопрос № 950
Привет всем. Про вопрос 936: Ответ x-перта _vt: А ты соблюдал языковые соглашения по вызовам процедур из dll? Я не вижу... Ответ x-перта sir henry: Чтобы использовать процедуру или функцию из DLL, ее надо экспортировать (см. приложение). Мужики, читать внимательней надо. Я НЕ СПРАШИВАЛ, как вызывать процедуру из DLL. Я спрашивал, как DLL_PROCESS_DETACH обработать. Вроде в примере все должно работать по идее. Если в инете поискать - тоже примеры типа такого. Но вот работать он отказывается. Короче, кто поможет разобраться, тому дам исходник недавно мной созданной DLL-ки, с помощью которой можно спрятать процесс от Task Manager'а в WinNT\2000\XP (чувствую, что у некоторых сейчас загорелись глаза и возникло сильное желание мне помочь :)) - точно дам, не обманываю. :)
Добрый день, Marouder! Лично у меня твой пример отлично работает - в первый раз я его не компилировал :) Просто LoadLibrary, FreeLibrary - мессаджбокс появился... Причем из программы на MASM32 - т.е. языковые соглашения не причем, да они и не должны быть причем - мы ведь функции пока не вызываем? :)
*** E-Man 1.5 (edition 04) - life is just a game...if you a student:) ***
Ответ отправлен: 22.09.2003, 18:21 Отправитель: _vt Отвечает sir henry
Здравствуйте, Marouder! Мужик, написал бы хотя бы какая ошибка выскакивает, или вообще, никаких сообщение? Не сердись так, сам виноват - "брат таланта" :)). Ответ отправлен: 22.09.2003, 09:43 Отправитель: sir henry
Вопрос № 951
Здравствуйте, уважаемые эксперты !!! C вашего позволения хочу вернуться к вопросу № 909. Многие спросили, а закрывается ли форма: да, точно, закрывается мышкой по крестику, а не скрывается (Hide), и все я правильно Вам указал. Переменные Gl_Top, Gl_Left, Gl_Height, Gl_Width являются глобальными (они и называются Gl_XXX) и описаны в каждой из трех форм (хотя я пробовал и только в одной, эффекта ни какого). Мне бы хотелось, чтобы каждое появляющееся окно (которое выберит пользователь, т.е. неизвестно какое) принимало размеры предыдущего, тем самым полностью его накрывая. А в итоге получается каждая из трех форм запоминает только свое положение и каждый раз появляется в этом запомненном положении. Уж больно не хочется мне связываться с ini-файлами, ведь с памятью быстрее. Будьте так добры ответьте еще разочек,
а то программа уже готова и только вот эта проблема, портит весь эстетический вид программы :). procedure TForm1.FormCloseQuery(Sender: TObject; // или procedure TForm1.FormHide(Sender: TObject); var CanClose: Boolean); begin ..... Gl_Top:=Top; Gl_Left:=Left; Gl_Height:=Height; Gl_Width:=Width; ..... end;
Приветствую Вас, SATAN aka NAPALM! Если ты хочешь сделать что-то типа визарда, то не мучайся с этим, просто сделай им всем одинаковые размеры, запрети изменение размера и задай появление окон по центру экрана...
*** E-Man 1.5 (edition 04) - life is just a game...if you a student:) ***
Ответ отправлен: 23.09.2003, 01:10 Отправитель: _vt Отвечает Bob Johnson
Доброе время суток, SATAN aka NAPALM! > да, точно, закрывается мышкой по крестику Это означает "Нет". Когда ты закрываешь форму крестеком (или alt-f4), то приходит сообщение OnClose. Чтобы форма уничтожалась, надо в его обработчике присваивать Action = caFree, т.к. по умолчанию там стоит что-то вроде caHide, что просто скрывает форму, а сама она прекрасно остается жить дальше.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 22.09.2003, 22:37 Отправитель: Bob Johnson Отвечает ART_43
Здравствуйте, SATAN aka NAPALM! Gl_Top, Gl_Left, Gl_Height, Gl_Width нужно объявлять только в одном месте, а не у каждой формы. Например в модуле главной формы и все формы считывают/записывают эти переменные именно из этого модуля, а не каждая из своего. Ответ отправлен: 23.09.2003, 11:10 Отправитель: ART_43 Отвечает sir henry
Здравствуйте, SATAN aka NAPALM! У каждой формы обычно свой модуль. У тебя в каждом "форменном" модуле объявлены GL_XXX? Попробуй сделать дополнительный модуль, например Constants.pas и в разделе implementation объявить переменные GL_XXX. Потом, в каждом "форменном" модуле, в раздел USES добавь Constatnts. Тогда у тебя переменные GL_XXX будут действительно глобальные и видимы всеми формами. Ответ отправлен: 23.09.2003, 13:34 Отправитель: sir henry
Вопрос № 952
Здравствуйте. Я только начинаю пр-ть в Builder. В Delphi при обработчике клика по кнопке пишем: form1.caption:="aaaa"; А как писать в Bulder-е, он выдает ошибку по след.коду: form1->caption="aaaa"; Почему компилятор не признает форму, в чем моя ошибка?
Добрый день, Yakut! просто Caption = "aaaa" Ответ отправлен: 23.09.2003, 16:05 Отправитель: Cybernetic Creature Отвечает Артём Шегеда
Здравствуйте, Yakut!
В C++ имеет значение регистр идентификаторов, поэтому TForm1 не то же самое, что tform1, а caption не то же самое, что Caption. В качестве пожелания скажу, что если в методе класса TForm1 ты обращаешься к переменной Form1:TForm1, то это плохой стиль. Со временем ты сам это поймёшь... Ответ отправлен: 22.09.2003, 16:01 Отправитель: Артём Шегеда Отвечает Bob Johnson
Приветствую Вас, Yakut! С++ билдер различает маленькие и большие буквы, поэтому пиши Form1->Caption. И вообще привыкай к этому - так сделано практически в любом нормальном языке программирования. Unix, например, даже в именах файлов различает маленькие и большие буквы.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 22.09.2003, 22:38 Отправитель: Bob Johnson Отвечает Marouder
Добрый день, Yakut! В C++ нужно соблюдать строчные и заглавные буквы в именах объектов, функций и переменных. Надо писать: Form1->Caption="aaaa";
Ответ отправлен: 23.09.2003, 09:03 Отправитель: Marouder Отвечает sir henry
Доброе время суток, Yakut! Напиши тект выдаваемой ошибки, а то так сразу не разберешь. Ответ отправлен: 23.09.2003, 14:58 Отправитель: sir henry
Вопрос № 953
Доброе время суток всем коллегам. Вопрос у меня такой: Есть программа написааная под Делфи7. Так как я немножко полиглот то научил свою программу говорить на 6 языках. Английский Русский Турецкий Французский Немецкий Азербайджанский. Вот но моя програ щас говорит только на русском. А мне хотелось бы что б в меню можно было выбирать какой язык тебе нужен. И как можно заставить прогу показать Юникод т.е. #601 он не показывал мне Игрек о нормальный ə Пожалуйста не присылайте глупых ответов типа поищи там то, а зачем это тебе нужно, посмотри в папке демос Если знаешь нормальный ответ функции или процедуры для этого присылай иначе попрошу не морочить голову и еще для ХРерта ТНЕ_РЯО "Гагаш джануву йийим сен бу суала джаваб йазма. Билирям ки онсуз да джавабы билмирсян"
Приветствую Вас, Cybernetic Creature! 1) А что это ты вдруг стал кириллицей писать??? :)) 2) В дельфи/билдере для этого есть специальные средства, называется что-то типа Translation Manager... 3) Если "правильно" программировать, то все меню и другие строки нужно оформить в виде ресурсов с заданным кодом языка - загружать их LoadMenu, LoadString и т.д. и они автоматически будут выбираться для языка, выбранного в системе... 4) Еще их можно сохранить в отдельных dll и при выборе нужного пункта меню, подгружать... 5) пункты 3) 4) лучше в дельфи не использовать, хотя и возможно... С другой стороны ты поймешь, что дельфи - не идеал :)
*** E-Man 1.5 (edition 04) - life is just a game...if you a student:) ***
Ответ отправлен: 23.09.2003, 01:10 Отправитель: _vt Отвечает URiS
Здравствуйте, Cybernetic Creature! Я полагаю, легче всего сделать это дело через TAG. 1) То есть у тебя есть элементы на форме, у каждого из которых свой уникальный параметр TAG. 2) Также у тебя есть языковые файлы, содержащие в себе текст типа: 1001=Русский язык 1002=О программе... 1003=Ещё что-нибудь... 3) Так вот. При выборе языка ты загружаешь соответствующий языковый файл, затем ищешь на форме нужный TAG и присваиваешь компоненту соотвотствующую надпись. Например, кнопка с TAG'ом 1002 у тебя будет иметь текст "О программе...". Если интересуют технические подробности - обращайся: mailto:urisff@inbox.ru. > "Гагаш джануву йийим сен бу суала джаваб йазма. Билирям ки онсуз да джавабы билмирсян" Как жаль, что я незнаю азербайджанский язык...
:)
Ответ отправлен: 23.09.2003, 19:05 Отправитель: URiS Отвечает CJ
Добрый день, Cybernetic Creature! В принципе можешь создавать lng-файлы! С имененм языка! В меню например выбираешь язык и твой файл открывается и везде где надо пишется текст на языке! Этот способ оч.медленный, но его можно усовершенствовать! Ответ отправлен: 23.09.2003, 15:37 Отправитель: CJ
Вопрос № 954
Доброе время суток. Пишу в Builder C++ & ADO(Access). Есть несколько БД (отдельные файлы mdb). Каждая БД состоит из нескольких таблиц. Необходимо в программе работать со всеми таблицами, из разных файлов, одновременно (то есть задавать запрос ADOQuery). Проблема: В ADOQuery.SQL – “…From “ + задаются названия таблиц. Но как задать БД? В ADOQuery.Connection – ссылка на объект TADOConnection - который подключен только к одной БД через ConnectionString. Может можно ссылаться сразу на несколько Connections, либо несколько DataSource, ADOQuery? Но как?
Здравствуйте, Hyzhak! na SQL obichno delayetsya tak: //select * from DB.TABLE select * from ADODB.ADOTable,Auth.Users; Ответ отправлен: 24.09.2003, 10:27 Отправитель: THE_PRO
Вопрос № 956
Здравствуйте, уважаемые эксперты! Помогите пожалуйта с такой проблемой: мне нужно в ходе выполнения программы поменять значение у текущей записи true на false. Для этого использую такой кусок: Table1->EditKey(); Table1->FieldByName("ACTIVE")->AsBoolean = false; Table1->Post(); Но никаких изменений в таблице не происходит. Может нужно как-то по-другому это делать?
Доброе время суток, Alexandr! Nu konechno ne proizoydet... vot kak nado: Table1->Edit(); Table1->FieldByName("ACTIVE")->AsBoolean = false; Table1->Post(); Proveryano na BCB6 Ответ отправлен: 24.09.2003, 10:24 Отправитель: THE_PRO Отвечает Артём Шегеда
Приветствую Вас, Alexandr!
Не тот метод вызываешь - тебе нужен не EditKey(), а Edit(). EditKey() предназначен для задания фильтра. Ответ отправлен: 23.09.2003, 10:08 Отправитель: Артём Шегеда Отвечает ART_43
Доброе время суток, Alexandr! Вместо Table1->EditKey(); напиши Table1->Edit(); Ответ отправлен: 23.09.2003, 11:19 Отправитель: ART_43
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.