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

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


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

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

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

Выпуск № 190
от 25.07.2005, 19:20

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


Вопрос № 23733: Привет всем экспертам! У меня к Вам 3 вопроса, надеюсь на все получить ответы. 1) Как в Memo установить курсор на определенную строку. Пробовал Memo1.CaretPos.X:= blabla, но нельзя. Так как мне установить курсор на нужную строку ? 2) Здес...
Вопрос № 23738: Здраствуйте уважаемые эксперты, у меня такая задача: телефон siemens m55 подключен через com3 порт, дайте пожалуйста пример (исходного кода) , как можно послать на этот порт AT команду (любую), только обясните чтобы было понятно и начинаещему ;) ...
Вопрос № 23764: Привет Эксперты. Подскажите пожалуйста, как работать с Socket`ами. Точнее как собрать сервер, как открыть порт на прослушивание? (Про клиент я знаю). Пробовал искать в Internet`е, но ничего подходящего не нашел :( Поэтому подскажите plz. ...
Вопрос № 23772: Здравствуйте! Разбиваю текстовый файл на нужное колличество строк (в Memo) и сохраняю его в нескольких файлах. Понял, что в RichEdit будет лучше так как открывает большое колличество строк. Вопрос. 1.Как переделать с Memo на Ric...

Вопрос № 23.733
Привет всем экспертам!
У меня к Вам 3 вопроса, надеюсь на все получить ответы.
1) Как в Memo установить курсор на определенную строку. Пробовал Memo1.CaretPos.X:= blabla, но нельзя. Так как мне установить курсор на нужную строку ?
2) Здесь недавно обсуждали MSAgent, ну я тоже захотел попробовать это добавить в программу. Все нормально, НО... текст выводится очень долго. Выводится 1 слово, потом пауза, затем 2 слово, пауза и т.д. Может кто знает как убрать паузу?
3) Слышал, что есть удаленная работа, кто-нибудь сталкивался с этим? Было бы не плохо дома сидеть и подрабатывать. Какой никакой опыт, а если повезет, то и заработать можно. Так, реально ли это, или стоит забыть это дело.
Вот, жду ответов.
Заранее спасибо.
Отправлен: 19.07.2005, 19:00
Вопрос задал: Andy r00t (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: Denisss
Здравствуйте, Andy r00t!
Ответ на первый вопрос смотрите в приложении. (Не совсем корректный, на мой взгляд, но работает)

По поводу MSAgent - (если я не ошибаюсь, это "ассистент" из набора офиса) http://www.delphiarea.com/products/assistant/ - готовый компонент. Я думаю, что за столь долгое время разработки, этот агент избавился от многих глюков и тормозов, остается только воспользоваться им :)

На третий вопрос ответить не могу - не сталкивался еще. ;)

Приложение:

Ответ отправил: Denisss (статус: Студент)
Отправлен: 19.07.2005, 20:16
Оценка за ответ: 5
Комментарий оценки:
Спасибо

Отвечает: Gin


Здравствуйте, Andy r00t!

1. Попробуйте - Номер строки.SetFocus;
2. У Вас, наверное, попались ленивые Агенты (такое случается) ;). Если Вы пользуетесь таймером - выбросте его. Используйте Sleep. Смотрите пример:

procedure TForm1.FormShow(Sender: TObject);
begin
Agent1.Connected:=True;
Agent1.Characters.Load('merlin.acs','C:WINDOWSmsagentcharsmerlin.acs');
Agent1.Characters['merlin.acs'].Show(False);
{ Переезжаем в противоположный угол }
Agent1.Characters['merlin.acs'].MoveTo(Screen.WorkAreaWidth-Agent1.Characters['merlin.acs'].Width,
Screen.WorkAreaHeight-Agent1.Characters['merlin.acs'].Height, 800);
{ Приветствие }
Agent1.Characters['merlin.acs'].Play('Greet');
{ Читаем содержимое Edit1 }
Agent1.Characters['merlin.acs'].Speak(Edit1.Text, '');
Sleep(11000);
Agent1.Characters['merlin.acs'].Speak(Edit2.Text, '');
Sleep(10000);
Agent1.Characters['merlin.acs'].Speak(Edit3.Text, '');
Sleep(5000);
{ Читаем содержимое Memo1 }
Agent1.Characters['merlin.acs'].Speak(Memo1.Text, '');
Sleep (11000);
Agent1.Characters['merlin.acs'].Speak(Memo2.Text, '');
Sleep(12000);
Agent1.Characters['merlin.acs'].Speak(Memo3.Text, '');
Sleep(3000);
// { Скрываем персонажа с анимацией }
Agent1.Characters['merlin.acs'].Hide(False);
// Agent1.Characters.Load('merlin.acs', Edit1.Text);
Close;
end;

Подставляя время засыпания можно сделать так что Агент будет тараторить без умолку.

3. Слышал. Осмелюсь догадаться - Вы как и я не программист. Верно? Если так то ловить нечего (по крайней мере то что нашел я). Предлогаемый заработок едва ли перекроет затраты на интернет, а жесткая привязка по обязательствам (с Вашей стороны, но не с платильщика) врядли даст Вам возможность чувствовать себя свободным по времени. Это что касается простой работы.
Статьи Вы писать явно не будите.
Кодингом заниматься тоже.
В общем остается поиск и рассылка спама. Но тут следует задуматься - давно ли Вы получали по морде (и в прямом и в переносном смысле)? Да, да. Пусть не физически, но забьют так что и в интернет не выйдете (в случае если не умеете скрывать свои следы).

С Уважением, Gin.
Ответ отправил: Gin (статус: Студент)
Отправлен: 19.07.2005, 21:32
Оценка за ответ: 5
Комментарий оценки:
1) Т.е. Memo1.номер_строки.SetFocus - нет, не работает. Проверил бы сначала.
2) Вообще-то, я написал, что знаю как этим агентом пользоваться. И код у меня примерно такой же, но я попробывал этот. Результат - агент тормозит, т.е. говорит он с паузами. P.S. Таймера у меня нет, и Sleep`а тоже.
3) Не совсем правильно догадался :) Я программер, даже диплом есть "Техник-программист", пока окончил колледж. Сейчас поступаю в ВУЗ. Так что, ошибся ты в выводах. Но статьи писать я правда не буду :). А насчет кодинга... (ясно, надеюсь)
Ну а спам, это не для меня.

Отвечает: VBA
Здравствуйте, Andy r00t!

Memo1.CaretPos.X - это не строка, а позиция символа в строке.
Memo1.CaretPos.Y - вот это строка!!!
---------
Неправ вечно юзер, ибо прав всегда Админ!
Ответ отправил: VBA (статус: 5-ый класс)
Отправлен: 20.07.2005, 11:17
Оценка за ответ: 3
Комментарий оценки:
Это оЧеПятка. Хотя все равно, что X, что Y, это не работает. вообщем ответа не получил :(


Вопрос № 23.738
Здраствуйте уважаемые эксперты, у меня такая задача: телефон siemens m55 подключен через com3 порт, дайте пожалуйста пример (исходного кода) , как можно послать на этот порт AT команду (любую), только обясните чтобы было понятно и начинаещему ;)
p. s. Я читал похожий вопрос про sony ericsson но ничего не понял :(
Отправлен: 19.07.2005, 22:05
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов отправлено: 1

Отвечает: And1
Здравствуйте, Станислав!
Вы скорее всего знаете программу SiMoCo, вот там во вкладке Term выводятся все команды, которые прога посылает мобиле... поиграйся с ними (через дистанционное управление) и увидешь всё что послано мобиле...
А посылать команды на определённый порт можно с помощью специального компонента..., если нужен пиши на мыло: root@realcoder.com.ru, вышлю.
P.S. У меня самого Siemens M55, и я пытался написать нечто похожее, но нужно ещё как-то сконнектить трубку с компом, что бы она ожидала команд, а для разных целей это делается по разному... (патчинг, DES и др.), вообщем если есть время и нервы то попытаться стоит, а так это всё бессмысленно... (Надеюсь, я Вас не отпугнул)
Удачи!
Ответ отправил: And1 (статус: 3-ий класс)
Отправлен: 23.07.2005, 10:05
Оценка за ответ: 5


Вопрос № 23.764
Привет Эксперты.
Подскажите пожалуйста, как работать с Socket`ами. Точнее как собрать сервер, как открыть порт на прослушивание? (Про клиент я знаю).
Пробовал искать в Internet`е, но ничего подходящего не нашел :(
Поэтому подскажите plz. Хотелось бы и исходник посмотреть :)

Приложение:

Отправлен: 20.07.2005, 14:44
Вопрос задал: Andy r00t (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Bochvarov NikB
Здравствуйте, Andy r00t!
http://www.delphimaster.ru/articles/sockets/index.html
И возле :)
Ответ отправил: Bochvarov NikB (статус: 4-ый класс)
Отправлен: 20.07.2005, 16:46
Оценка за ответ: 4
Комментарий оценки:
Спасибо, конечно за ссылку. Но я просил исходники для работы с Socket`ом, (не используя компоненты)

Отвечает: Werewolf
Здравствуйте, Andy r00t!
примерно так
uses winsock...

procedure TForm1.Button1Click(Sender: TObject);
var wsadata:TWSAData;
version,Port:word;
er,i,bytesSent,bytesRecv:integer;
sock,AcceptSocket:TSocket;
sin:sockaddr_in;
sendbuf,recvbuf:String[32];
const knownver:array[0..3,0..1] of byte = ((2,2),(2,0),(1,1),(1,0));
begin
memo1.Lines.Clear;
bytesRecv:= SOCKET_ERROR;
sendbuf := 'Строка от сервера.';
for i:=0 to 3 do begin
version:=MakeWord(knownver[i,0],knownver[i,1]);
er:=WSAStartup(version,wsadata);
if er=0 then begin
memo1.Lines.Add('WSA Инициализирован v.'+inttostr(LOBYTE( wsaData.wVersion ))
+'.'+inttostr(HIBYTE( wsaData.wVersion )));
break;
end;
end;

if er<>0 then begin
Application.MessageBox(pchar(SysErrorMessage(WSAGetLastError)),'WSAStartup',MB_OK);
WSACleanup;
exit;
end;

sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if sock=INVALID_SOCKET then
begin
Application.MessageBox(pchar(SysErrorMessage(WSAGetLastError)),'socket',MB_OK);
WSACleanup;
exit;
end;
sin.sin_family:=AF_INET;
Port:=WORD(strtoint(Edit1.text));

sin.sin_port:=htons(Port);
sin.sin_addr.S_addr:=inet_addr('127.0.0.1');

if bind(sock,sin,sizeof(sin))=SOCKET_ERROR then
begin
Application.MessageBox(pchar(SysErrorMessage(WSAGetLastError)),'bind',MB_OK);
closesocket(sock);
WSACleanup;
exit;
end;

// Listen
if listen( sock,32) = SOCKET_ERROR then
begin
Application.MessageBox(pchar(SysErrorMessage(WSAGetLastError)),'listen',MB_OK);
closesocket(sock);
WSACleanup;
exit;
end;
memo1.Lines.Add( 'Жду подключения...' );
while true do begin
AcceptSocket := SOCKET_ERROR;
Application.ProcessMessages;
while ( AcceptSocket = SOCKET_ERROR ) do begin
AcceptSocket := accept( sock, nil, nil);
Application.ProcessMessages;
end;

memo1.Lines.Add( 'Подключен');
sock := AcceptSocket;
break;
end;

// Получаем затем отправляем.
bytesRecv := recv( sock, recvbuf, length(recvbuf), 0 );
memo1.Lines.Add( 'Bytes Recv:' +inttostr( bytesRecv ));
bytesSent := send( sock, sendbuf, length(sendbuf), 0 );
memo1.Lines.Add( 'Bytes Sent:' +inttostr( bytesSent) );

closesocket(sock);
WSACleanup;
end;
Ответ отправил: Werewolf (статус: 3-ий класс)
Отправлен: 22.07.2005, 02:48
Оценка за ответ: 5
Комментарий оценки:
Еще не проверял, но надеюсь работает :) Cпасибо !!!


Вопрос № 23.772
Здравствуйте!
Разбиваю текстовый файл на нужное колличество строк (в Memo)
и сохраняю его в нескольких файлах.
Понял, что в RichEdit будет лучше так как открывает большое колличество строк.
Вопрос.
1.Как переделать с Memo на RichEdit
2.Как в SaveDialog убрать Имя файла и Тип файла,
оставить "путь" для сохранения и кнопки "сохранить и отмена".
Спасибо.

procedure TForm2.Button1Click(Sender: TObject);
var
m: integer;
begin
if SaveDialog2.Execute then
m:= StrToInt(Edit1.Text);
SaveStringsToFiles(Form1.Memo1.Lines, m);
Form2.Close;
end;
function TForm2.SaveStringsToFiles(const AList: TStrings;
ACountLines: Integer): Boolean;
var
i, x: integer;
List: TStrings;
FileName: string;// для добавления строк
begin
List:= TStringList.Create;
x:= 1;// Счетчик с 1го
FileName:= 'L'+IntToStr(x);
List.Add(FileName);
for i:= 0 to Alist.Count-1 do
begin
List.Add(AList.Strings[i]);
if ((i+1) mod ACountLines = 0)and(i<>0)
then
begin
List.Add('N'+IntToStr(List.Count+1)+'A450');// вот это добавили
List.SaveToFile(FileName+'.iso');
x:= x+1;
FileName:= 'L'+IntToStr(x);
List.Clear;
List.Add(FileName+'');//Убрали +'iso' для L1 L2 ...
end;
end;
{'N'+IntToStr(List.Count+1)+'A450' Отображает номер строки}
List.Add('N'+IntToStr(List.Count+1)+'A450');// вот это добавили для последнего файла
List.SaveToFile(FileName+'.iso');
List.Free;
Result:= True;
end;
Отправлен: 20.07.2005, 17:05
Вопрос задал: Serhik_z (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Werewolf
Здравствуйте, Serhik_z!
1. вместо memo1 везде пропишите richedit1
2. убрать их можно через API команды предварительно найдя их hwnd, но для такой задачи, возможно, лучше будет вызвать диалог выбора папки (да ещё и с возможностью добавления новой) см. приложение.

Приложение:

Ответ отправил: Werewolf (статус: 3-ий класс)
Отправлен: 21.07.2005, 04:00

Отвечает: mvp
Здравствуйте, Serhik_z!
1. RichEdit1.lines := Memo1.lines;
а ещё лучше, как советовал WereWolf
---------
Моя совесть чиста - не бывшая в употреблении
Ответ отправил: mvp (статус: 3-ий класс)
Отправлен: 22.07.2005, 15:11


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное