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

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


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 425
от 27.03.2006, 01:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 286, Экспертов: 70
В номере:Вопросов: 8, Ответов: 18


Вопрос № 38076: Здраствуйте!!! Помню видел здесь процедурку которая в строке ищет другую строку и заменяет её на третью!Подскажите плиз!...
Вопрос № 38095: Здравствуйте. Нужно доработать компонент TTimer так чтобы в нём было свойство пауза, т.е. остановить таймер на каком-то промежутке времени, а потом с этого времени опять начать отсчёт....
Вопрос № 38112: Здравствуйте Уважаемые эксперты!!!!!!!!!!!! У меня вот такой вопрос как мне на делфи строку из ComboBox на форме занести в документ Word или Excel или из компонента Memo Как создать таблицу в документе Excel и внести данные из вышеописанных к...
Вопрос № 38114: У меня динамический запрос! Выдаёт все покупки за: всё время,за неделю,за месяц и т.д. и т.п.! Как из нынешней даты отнять 1,5, 30 и т.д. дней?!...
Вопрос № 38142: Здравствуйте!!! Ниже представлен код на Delphi. Подскажите пожалуйста как этот код может выглядеть на С++ Builder. Рядом с кодом на Delphi я написал код на C++ который смог перекодировать остальное не знаю. Помогите кто чем может!!!!!!!!<...
Вопрос № 38144: Здравствуйте эксперты ! Внизу код ! Вопрос вчём ошибка ??? Я думал что он будет выдавать шестнадцатиричный код или какуето херомантию вроде IPPPPPPPP^ZPTV ну или что нить другое ! Вместо этого он выдаёт мне в большенстве случаев 0 ! К...
Вопрос № 38150: Уважаемые эксперты! Закрываю я EXCEL с помощью Delphi но так как там были сделаны изменения Excel спрашивает меня сохранить изменения или нет, так вот, как сделать чтобы на этот вопрос Delphi ответила НЕТ! Заранее спасибо!...
Вопрос № 38158: Всем, привет! Давно я сюда не заходил... Каюсь... Ну вот и вопрос: Есть задание - на компе имеется 6-8 девайсов... необходимо, чтобы при вставке в них носителей(CD-ROM, Flash и т.д) они сразу копировали файлы определенного формата...

Вопрос № 38.076
Здраствуйте!!!
Помню видел здесь процедурку которая в строке ищет другую строку и заменяет её на третью!Подскажите плиз!
Отправлен: 21.03.2006, 08:29
Вопрос задал: chikanok (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Timoshin A.B.
Здравствуйте, chikanok!
Если ты о замене подстроки то вот

Приложение:

Ответ отправил: Timoshin A.B. (статус: 6-ой класс)
Ответ отправлен: 21.03.2006, 08:43

Отвечает: Полховский Александр Владимирович
Здравствуйте, chikanok!
Если интересуют стандартные из Delphi:
AnsiReplaceSrt - с учётом регистра
AnsiReplaceText - без учёта регистра
Модуль StrUtils
---------
Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Практикант)
Ответ отправлен: 21.03.2006, 09:30

Отвечает: Diman_A
Здравствуйте, chikanok!
Функция в приложении. Комментарии к переменным:
str - исходная строка
str1 - подстрока, подлежащая замене
str2 - заменяющая строка

Приложение:

Ответ отправил: Diman_A (статус: 8-ой класс)
Ответ отправлен: 21.03.2006, 10:40

Отвечает: sir henry
Здравствуйте, chikanok!
В модуле StrUtils есть такая функция:
function AnsiReplaceStr(const AText, AFromText, AToText: string): string;
Она Вам безусловно поможет.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 21.03.2006, 12:52

Отвечает: Malysh
Здравствуйте, chikanok!
Такая функция называется StringReplace.

type TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);

function StringReplace (const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

где

S - строка в которой искать,

OldPattern - строка которую искать и менять

NewPattern - строка на которую менять

Flags - как выполнить замену: rfReplaceAll - заменить все вхождения подстроки, rfIgnoreCase - заменить только первое вхождение.
Ответ отправил: Malysh (статус: Студент)
Ответ отправлен: 21.03.2006, 15:02


Вопрос № 38.095
Здравствуйте. Нужно доработать компонент TTimer так чтобы в нём было свойство пауза, т.е. остановить таймер на каком-то промежутке времени, а потом с этого времени опять начать отсчёт.
Отправлен: 21.03.2006, 12:50
Вопрос задал: Telichko Sergey (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Cheater76
Здравствуйте, Telichko Sergey!
А если так?
Timer1.Enabled:=false;
Sleep(1000);
Timer1.Enabled:=true;
Ответ отправил: Cheater76 (статус: 3-ий класс)
Ответ отправлен: 21.03.2006, 19:30

Отвечает: Leshiy2006
Здравствуйте, Telichko Sergey! создайте переменную-счетчик которая будет подсчитывать число срабатываний таймера, при достижении счетчиком какой-либо величины останавливаете таймер(Enabled:=False).
Удачи!
Ответ отправил: Leshiy2006 (статус: 5-ый класс)
Ответ отправлен: 21.03.2006, 22:18

Отвечает: Timoshin A.B.
Здравствуйте, Telichko Sergey!
Использование второго таймера на величину паузы.
Ответ отправил: Timoshin A.B. (статус: 6-ой класс)
Ответ отправлен: 22.03.2006, 01:18


Вопрос № 38.112
Здравствуйте Уважаемые эксперты!!!!!!!!!!!!
У меня вот такой вопрос как мне на делфи строку из ComboBox на форме занести в документ Word или Excel или из компонента Memo
Как создать таблицу в документе Excel и внести данные из вышеописанных компонентов
Отправлен: 21.03.2006, 14:26
Вопрос задал: Zatyahnyh A.A. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Cheater76
Здравствуйте, Zatyahnyh A.A.!
Попробуй поюзать компоненту FlexCel
http://www.torry.net/vcl/reports/other/flexceld7.zip
http://www.tmssoftware.com/flexcel/flexceld2005.zip
Ответ отправил: Cheater76 (статус: 3-ий класс)
Ответ отправлен: 21.03.2006, 19:20


Вопрос № 38.114
У меня динамический запрос! Выдаёт все покупки за: всё время,за неделю,за месяц и т.д. и т.п.! Как из нынешней даты отнять 1,5, 30 и т.д. дней?!
Отправлен: 21.03.2006, 15:00
Вопрос задал: chikanok (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, chikanok!
В модуле DateUtils есть функция прибавления\убавления дней к определенной дате:
IncDay(Now, 5);
IncDay(Now, -5);
В первом случае к текущей дате прибавляется пять дней, во втором - отнимается.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 21.03.2006, 15:29

Отвечает: Ataman N. N.
Здравствуйте, chikanok!
var D1: TDate;
............
D1 := Now{нынешняя дата} - 1{5, 30 и т.д};
Ответ отправил: Ataman N. N. (статус: 10-ый класс)
Ответ отправлен: 21.03.2006, 16:43


Вопрос № 38.142
Здравствуйте!!! Ниже представлен код на Delphi.
Подскажите пожалуйста как этот код может выглядеть на С++ Builder.
Рядом с кодом на Delphi я написал код на C++ который смог перекодировать
остальное не знаю. Помогите кто чем может!!!!!!!!
var
XLApp,Sheet,Colum:Variant; //Variant XLApp,Sheet,Colum;
index,i:Integer; //int index,i;
begin
XLApp:= CreateOleObject('Excel.Application'); //XLApp = CreateOleObject("Excel.Application");
XLApp.Visible:=true; //XLApp.OlePropertySet("visible",true);
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Îò÷¸ò';http://rusfaq.ru/?Step=help&Action=General#99
Colum:=XLApp.Workbooks[1].WorkSheets['Îò÷¸ò'].Columns;http://rusfaq.ru/?http://rusfaq.ru/?Step=help&Action=General#99Step=help&Action=General#99
Colum.Columns[1].ColumnWidth:=20;
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;http://rusfaq.ru/?Step=help&Action=General#99
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;http://rusfaq.ru/?Step=help&Action=General#99
Colum:=XLApp.Workbooks[1].WorkSheets['Îò÷¸ò'].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Sheet:=XLApp.Workbooks[1].WorkSheets['Îò÷¸ò'];
Sheet.Cells[1,2]:='Òåëåôîííûé ñïðàâî÷íèê';
Sheet.Cells[2,1]:='Ôàìèëèÿ';
Sheet.Cells[2,2]:='Èìÿ';
Sheet.Cells[2,3]:='e-mail';
Sheet.Cells[2,4]:='Ãîðîä';http://rusfaq.ru/?Step=help&Action=General#99
Sheet.Cells[2,5]:='Äàòà ðîæäåíèÿ';
Отправлен: 21.03.2006, 20:01
Вопрос задал: Rewer8 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Rewer8!
Если Вы работаете с объектами, то при обращении к его свойству или методу вместо точуи ставьте тире и знак больше.
Сравнение и присвоение реализуется знаком равно, т.е. не как в Паскале.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 22.03.2006, 06:54


Вопрос № 38.144
Здравствуйте эксперты !
Внизу код ! Вопрос вчём ошибка ???
Я думал что он будет выдавать шестнадцатиричный код или какуето херомантию вроде IPPPPPPPP^ZPTV ну или что нить другое !
Вместо этого он выдаёт мне в большенстве случаев 0 !
Как быть посоветуйте !
С уважением,
Zmeu

Приложение:

Отправлен: 21.03.2006, 20:15
Вопрос задал: Tamashev Denis M (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Лучников Ю.В.
Здравствуйте, Tamashev Denis M!

Могли бы и написать, какую цель преследуете и привести пример входного файла.
Попробую ответить на то, что вижу...

Зачем такое преобразование:
bc:=s;
LAS:=IntToStr(bc);
?

Получается вы In64-число приводите к Int32 - а ведь это потеря данных...

Сразу IntToStr(s) разве нельзя? Ведь функция IntToStr() перегружена и для Int64 типа.

Успехов!
Ответ отправил: Лучников Ю.В. (статус: Практикант)
Ответ отправлен: 21.03.2006, 20:35
Оценка за ответ: 4
Комментарий оценки:
Так вот она и перегружена !
Вы код компелировали ???
Файл любой !
Всё одно и тоже !
Если откомпелируете то поймёте зачем какие преобразования !

Отвечает: Timoshin A.B.
Здравствуйте, Tamashev Denis M!
не правильное преобразование типов!
Ответ отправил: Timoshin A.B. (статус: 6-ой класс)
Ответ отправлен: 22.03.2006, 00:37
Оценка за ответ: 3
Комментарий оценки:
Мне это очень помогло !!!
Я просил обьяснить !
А несказать !

Отвечает: sir henry
Здравствуйте, Tamashev Denis M!
Я зделал примерно тоже самое, что и Вы, только с поправкой, что у меня нет Вашей формы и Вашего файла, откуда Вы берете данные. У меня все прекрасно работает.
Замечание: когда Вы преобразуете из Int64 в Int32, Вы теряете данные.
Вот мой код:
{$APPTYPE CONSOLE}
Program bb;
Uses Classes, SysUtils;
var
Ft: TextFile;
F:TFileStream;
s:int64;
cc:integer;
bc:integer;
ZX:string;
LAS:string;
bas:string;
i64: string;

begin
AssignFile(ft, 'text.txt');
Rewrite(ft);
ZX:='defs.ref';
cc:=1;
F:=TfileStream.Create(ZX,fmOpenReadWrite);
f.Seek(cc,soFromBeginning);
f.Read(s,sizeof(s));
bc:=s;
LAS:=IntToStr(bc);
bas:=IntToStr(cc);
i64:=IntToStr(s);
WriteLn(ft, bas,': ', LAS, ' ', bc);
WriteLn(ft, s, ' ', i64);
f.Free;
CloseFile(ft);
end.
*****************
Я Вас очень прошу, не ставьте оценку, если Вы не получили ответа на свой вопрос, т.к. задавать вопросы Вы не умеете. И вообще воздержитесь от выставления оценки.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 22.03.2006, 06:44
Оценка за ответ: 5
Комментарий оценки:
Насчёт "задавать вопросы Вы не умеете" я умею !
Просто я очень спешил !
Трафик у меня не резиновый !
Увы у меня модем !
Я уважаю вас "sir henry" и всех остальных экспертов www.rusfaq.ru
Если вы злитесь за прошлое , то извените меня !
С уважением,
Zmeu


Вопрос № 38.150
Уважаемые эксперты! Закрываю я EXCEL с помощью Delphi но так как там были сделаны изменения Excel спрашивает меня сохранить изменения или нет, так вот, как сделать чтобы на этот вопрос Delphi ответила НЕТ!
Заранее спасибо!

Приложение:

Отправлен: 21.03.2006, 21:16
Вопрос задал: Djoin (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Djoin!
А Вы закройте сначала рабочую книгу. В этом методе есть дополнительный параметр, позволяющий не сохранять изменения:
Workbooks.Close(False);
Если задать True, тогда вторым параметром можно задать имя файла, куда сохранять, тоже вопрос о сохранении выводится не будет.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 22.03.2006, 06:18
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо!

Отвечает: Diman_A
Здравствуйте, Djoin!
Вот пример, который закрывает Excel без сохранения документа:
procedure TForm1.Button1Click(Sender: TObject);
var
Excel: OLEVariant;
begin
Excel:= GetActiveOleObject('excel.Application');
Excel.DisplayAlerts := false;
excel.quit;
end;
Ответ отправил: Diman_A (статус: 8-ой класс)
Ответ отправлен: 22.03.2006, 11:02
Оценка за ответ: 5
Комментарий оценки:
Сапасибки все заработало


Вопрос № 38.158
Всем, привет!
Давно я сюда не заходил... Каюсь...
Ну вот и вопрос:
Есть задание - на компе имеется 6-8 девайсов... необходимо, чтобы
при вставке в них носителей(CD-ROM, Flash и т.д) они сразу копировали
файлы определенного формата в указанную папку.
Я сделал так:
1. Происходит опрос устройств на предмет имеющихся носителей.
2. Если он там есть, то начинаем копировать заданные файлы в
заданную папку.
3. Это организованно через поток(THread), чтобы не тормозить
основной поток приложения...
но вот какая получается ерунда... Если на носителе есть битые
файлы (диск поцарапанный...), то этот поток начинает
тормозить все остальные потоки. Все потоки одинаковые.
Как можно убрать етот тормоз?
Пробовал сделать массив из потоков и каждому устройству
орпределять свой поток, но схема не работает. Ошибки нет, но и
результата тоже...
Пишу на Delphi 6.
:-(( Если мало изложил - пытайте...

Help, me...!!!
Заренее благодарен, Александр.
Отправлен: 21.03.2006, 22:29
Вопрос задал: Sasha_b (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Timoshin A.B.
Здравствуйте, Sasha_b!
Скорее всего тормоз винды, мзбавится от него не удастся, более конкретно надо смотреть код.
Ответ отправил: Timoshin A.B. (статус: 6-ой класс)
Ответ отправлен: 22.03.2006, 00:29


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.20 (beta) от 17.03.2006
Яндекс Rambler's Top100

В избранное