Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 221
от 26.09.2003, 12:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 969
Отправлено ответов: 1848
Активность: 190.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

_vt
Статус: Профессиональный
Общий рейтинг: 122.69
[Подробней >>]
Cybernetic Creature
Статус: Профессиональный
Общий рейтинг: 124.18
URL: COOL
[Подробней >>]
ART_43
Статус: Опытный
Общий рейтинг: 122.48
URL: ART_43 Home Site
[Подробней >>]
 
sir henry
Статус: Доверительный
Общий рейтинг: 152.5
[Подробней >>]
Marouder
Статус: Профессиональный
Общий рейтинг: 122.5
URL: Первый Хабаровский Форум
Телефон: (4212) 21-93-65
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.03
[Подробней >>]
 
THE_PRO
Статус: Доверительный
Общий рейтинг: 140.38
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 151.66
URL: Программирование
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.78
URL: Пристанище неодинокого программиста
[Подробней >>]
 
URiS
Статус: Профессиональный
Общий рейтинг: 127.15
URL: Бесплатный любительский софт, игры
[Подробней >>]
CJ
Статус: Начальный
Общий рейтинг: 121.21
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 948. Hi Experts! Подскажите как, при описании процедуры, описать в ней необязательный параметр.... (ответов: 7)
Вопрос № 949. Здравствуйте эксперты! Я по поводу вопроса №933: "Имеется база *.mdb(для Access'97) хочеться ор... (ответов: 1)
Вопрос № 950. Привет всем. Про вопрос 936: Ответ x-перта _vt: А ты соблюдал языковые соглашения по вызовам процеду... (ответов: 2)
Вопрос № 951. Здравствуйте, уважаемые эксперты !!! C вашего позволения хочу вернуться к вопросу № 909. Многие спро... (ответов: 4)
Вопрос № 952. Здравствуйте. Я только начинаю пр-ть в Builder. В Delphi при обработчике клика по кнопке пишем: form... (ответов: 5)
Вопрос № 953. Доброе время сут... (ответов: 3)
Вопрос № 954. Доброе время суток. Пишу в Builder C++ & ADO(Access). Есть несколько БД (отдельные файлы mdb). Кажд... (ответов: 1)
Вопрос № 956. Здравствуйте, уважаемые эксперты! Помогите пожалуйта с такой проблемой: мне нужно в ходе выполнения ... (ответов: 3)

Вопросов: 8, ответов: 26


 Вопрос № 948

Hi Experts!
Подскажите как, при описании процедуры, описать в ней необязательный параметр.



Вопрос отправлен: 21.09.2003, 14:20
Отправитель: Byter

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Доброе время суток, 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.



Вопрос отправлен: 22.09.2003, 01:28
Отправитель: ILYA D.

[Следующий вопрос >>] [Список вопросов]

Отвечает THE_PRO

Добрый день, 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 (чувствую, что у некоторых сейчас загорелись глаза и возникло сильное желание мне помочь :)) - точно дам, не обманываю. :)



Вопрос отправлен: 22.09.2003, 08:10
Отправитель: Marouder (marouder@list.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Добрый день, 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;

procedure TForm1.FormShow(Sender: TObject);
begin
  .....
  Top:=Gl_Top;
  Left:=Gl_Left;
  Height:=Gl_Height;
  Width:=Gl_Width;
  .....
end;

Всем заранее спасибо. С уважением SATAN aka NAPALM.



Вопрос отправлен: 22.09.2003, 14:51
Отправитель: SATAN aka NAPALM

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Приветствую Вас, 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";
Почему компилятор не признает форму, в чем моя ошибка?



Вопрос отправлен: 22.09.2003, 15:32
Отправитель: Yakut

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Добрый день, 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 он не показывал мне Игрек о нормальный ə
Пожалуйста не присылайте глупых ответов типа поищи там то, а зачем это тебе нужно, посмотри в папке демос
Если знаешь нормальный ответ функции или процедуры для этого присылай иначе попрошу не морочить голову
и еще для ХРерта ТНЕ_РЯО
"Гагаш джануву йийим сен бу суала джаваб йазма. Билирям ки онсуз да джавабы билмирсян"



Вопрос отправлен: 22.09.2003, 15:34
Отправитель: Cybernetic Creature

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Приветствую Вас, 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.


> "Гагаш джануву йийим сен бу суала джаваб йазма. Билирям ки онсуз да джавабы билмирсян"
Как жаль, что я незнаю азербайджанский язык... :)

Expert: URiS


Ответ отправлен: 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? Но как?



Вопрос отправлен: 22.09.2003, 17:47
Отправитель: Hyzhak

[Следующий вопрос >>] [Список вопросов]

Отвечает THE_PRO

Здравствуйте, 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();
Но никаких изменений в таблице не происходит.
Может нужно как-то по-другому это делать?


Приложение:


Вопрос отправлен: 23.09.2003, 09:09
Отправитель: Alexandr (balex@mail.spbnit.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает THE_PRO

Доброе время суток, 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.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (31)
C / C++ (29)
Perl (8)
Builder / Delphi (22)
Pascal (23)
Basic / VBA (11)
Java / JavaScript (13)
PHP (14)
Криптография (10)
WinAPI (16)
Пользователю
Windows 95/98/Me (54)
Windows NT/2000/XP (63)
"Железо" (43)
Поиск информации (24)
Администратору
Windows NT/2000/XP (31)
Linux / Unix (15)
Юристу
Гражданское право (11)
Семейное право (9)
Трудовое право (9)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное