Вопрос № 83355: Здраствуйте.
У меня такой вопрос: есть строка S = '1000000'. Подскажите, есть ли такие процедуры чтобы отформатировать ее скажем в '1 000 000' или '1 000 000.00'? или где такую информацию можно найти.
Всем спасибо....Вопрос № 83393: Народ помогите не могу запустить файл.
мне нужно запустить внешний файл в pdf формате, акробат запускается а сам файл нет. что делать подскажите.
Заранее благодарю!...Вопрос № 83401: Уважаемые мастера Delphi! Подскажите,пожалуйста, как делать SQL запросы в ClientDataSet (т.е. запрос к базе который храниться в файле *.cds). Где-то встречал, что для этого используется свойство ClentDataSet - CommandText, но примеров не нашел, а сам...Вопрос № 83447: Есть форма с TCheckListBox и Memo
Как сделать, чтобы они прокручивались вместе...
Вопрос № 83.355
Здраствуйте.
У меня такой вопрос: есть строка S = '1000000'. Подскажите, есть ли такие процедуры чтобы отформатировать ее скажем в '1 000 000' или '1 000 000.00'? или где такую информацию можно найти.
Всем спасибо.
Отвечает: Устинов С.Е.
Здравствуйте, Иван Ивановввв!
Такие функции есть. Например function FormatFloat(const Format: string; Value: Extended): string; overload;
Только работают они не со строкой, а с числом.
Пример работы:
s:=FormatFloat('#,#.###',1894400001.810); // Результат - строка 1 894 400 001,81 - три символа решетки в конце - значит не более 3 символов после десятичного разделителя.
s:=FormatFloat('#,#.0000',1894400001.810); // результат строка 1 894 400 001,8100
s:=FormatFloat('#,#',1894400001.810); // результат 1 894 400 002
Ответ отправил: Устинов С.Е. (статус: Практикант)
Ответ отправлен: 20.04.2007, 00:49 Оценка за ответ: 5 Комментарий оценки: Спасибо, проверил все работает, то что нужно!
Отвечает: Gh0stik
Здравствуйте, Иван Ивановввв!
Для перевода числа в такой формат достаточно воспользоваться функцией function FormatFloat(const Format: string; Value: Extended): string;
Например: Edit1.Text:=FormatFloat('#,#',1234567891011);
или если нужно со знаками после запятой: Edit1.Text:=FormatFloat('#,#.00',1234567891011);
Но если Вам нужно отформатировать строку, то предлагаю такой код: var i,k:integer;
s:string;
begin
i:=1; k:=1;
s:=Edit1.Text;
while length(s)-3*i+k>0 do
begin
insert(' ',s,length(s)-3*i+k);
inc(i);dec(k);
end;
Edit1.Text:=s;//без знаков после запятой
{ Edit1.Text:=s+'.00';//с десятичными знаками, но только нулями!!!}
end;
Good Luck!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 20.04.2007, 01:00 Оценка за ответ: 5 Комментарий оценки: Это интересный вариант, спасибо большое за ответ.
Вопрос № 83.393
Народ помогите не могу запустить файл.
мне нужно запустить внешний файл в pdf формате, акробат запускается а сам файл нет. что делать подскажите.
Заранее благодарю!
Согласен, что можно было проще, как указано в мини-форуме. Что касается вашего кода, то полагаю проблема в том, что указан неполный путь к файлу в строке с CreateProcess - это касается файла данных, возможно ваш Reader отсчитывает относительный путь от другой рабочей директории и поэтому не находит файла PDF, также неплохо заключать путь с файлом в двойные кавычки, если в пути есть пробелы это очень актуально.
Ответ отправил: PGM (статус: 5-ый класс)
Ответ отправлен: 20.04.2007, 10:28 Оценка за ответ: 4
Вопрос № 83.401
Уважаемые мастера Delphi! Подскажите,пожалуйста, как делать SQL запросы в ClientDataSet (т.е. запрос к базе который храниться в файле *.cds). Где-то встречал, что для этого используется свойство ClentDataSet - CommandText, но примеров не нашел, а сам не разобрался.
Если сильно не обременит, то напишите примерчик.
Заранее спасибо!
Отправлен: 20.04.2007, 10:13
Вопрос задал: Dragon (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Химяк Виктор Васильевич
Здравствуйте, Dragon!
Кое-что нашел смотри.
Управление запросом на сервере
Компонент TdientDataSet может не только эффективно управлять своим набором данных, но и влиять на выполнение серверного компонента, с которым он связан через провайдер.
Свойство
property CornmandText: string;
содержит текст запроса SQL, имя таблицы или хранимой процедуры в зависимости от типа серверного компонента.
Изменив значение этого свойства на клиенте, можно, например, модифицировать запрос SQL на сервере. Но для этого в свойстве Options соответствующего компонента-провайдера TDataSetProvider должно быть установлено значение
poAliowCommandText := True;
Новое значение свойства CommandText отправляется на сервер только после открытия клиентского набора данных или выполнения метода
procedure Execute; virtual;
Для запросов или хранимых процедур можно задавать параметры, которые сохраняются в свойстве
property Params: TParams;
До выполнения запроса присваиваются значения входным параметрам. После выполнения хранимой процедуры в выходных параметрах размещаются полученные от сервера значения.
Обратите внимание, что при выполнении запросов или хранимых процедур может измениться порядок следования параметров. Поэтому обращаться к параметрам желательно по их именам. Например, так:
Для того чтобы получить текущие значения параметров компонента набора данных на сервере, достаточно использовать метод
procedure FetchParams;
Перед и после получения параметров от провайдера, клиентский набор данных вызывает методы-обработчики событий:
property BeforeGetParams: TRemoteEvent;
property AfterGetParams: TRemoteEvent;
Этот отрывок взят мной из "Иллюстрированный самоучитель по Delphi 7 для профессионалов", который находился на диске с дистрибутивом. Там же есть масса примеров. Полный размер архива 1,8Мб, если интересно, могу скинуть.
Ответ отправил: Химяк Виктор Васильевич (статус: 4-ый класс)
Ответ отправлен: 20.04.2007, 22:17
Вопрос № 83.447
Есть форма с TCheckListBox и Memo
Как сделать, чтобы они прокручивались вместе
procedure TSMemo.WM_VScroll(var Msg: TWMVScroll);
begin
ShowMessage('VScroll');
end;
Прокрутка Memo
Var
ScrollMessage:TWMVScroll;
begin
ScrollMessage.Msg:=WM_VScroll;
for i := Memo1.Lines.Count DownTo 0 do
begin
ScrollMessage.ScrollCode:=sb_LineUp;
ScrollMessage.Pos:=0;
Memo1.Dispatch(ScrollMessage);
end;
end;
procedure TListBob.WMHScroll(var Message: TWMHScroll);
{ помните что данное сообщение вызывается дважды!! }
begin
if Assigned(FOnHScroll) then
FOnHScroll(Self);
DefaultHandler(Message);
end;
procedure TListBob.WMVScroll(var Message: TWMHScroll);
{ помните что данное сообщение вызывается дважды!! }
begin
if Assigned(FOnVScroll) then
FOnVScroll(Self);
DefaultHandler(Message);
end;
procedure Register;
begin
RegisterComponents('Dr.Bob', [TListBob]);
end;
end.
Связать это я думаю труда не составит. Кстати примеры я взял из поборки статей Delphi World, очень рекомендую.
Ответ отправил: AlexStoune (статус: 1-ый класс)
Ответ отправлен: 20.04.2007, 15:31 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо!!Вы меня очень выручили.