Вопрос № 20040: Ув. эксперты.
Я как то задавал вопрос но мне так ни кто и не ответил.
1-е как можно обратиться к службе сообщений, чтобы отправить сообщение по заданному IP.
2-е Что нужно сделать чтобы в консольных приложениях (без VCL) отображался русск...Вопрос № 20064: Здраствуйте эксперты!!!
Подскажите пожалуйста вот я хочу сделать программу похожую на Microsoft access.
Так вот мне надо знать а как например из моей программы запустить БД сделанную на Access.
И где можно достать новые компаненты для Del...Вопрос № 20069: Хочу присвоить компоненту имя (Name), которое хранится в переменной типа String, но эта переменная начинается с символов :#. Как отфильтровать эти символ или как присвоить компонету имя начиная с третьего символа переменной?
ListBox1.Name:=??????...
Вопрос № 20040
Ув. эксперты.
Я как то задавал вопрос но мне так ни кто и не ответил.
1-е как можно обратиться к службе сообщений, чтобы отправить сообщение по заданному IP.
2-е Что нужно сделать чтобы в консольных приложениях (без VCL) отображался русский текст под ХР, 2к. Нужно настроить autoexec.bat а как это сделать.
Отправлен: 21.04.2005, 02:01
Вопрос задал: KolesnikovAV (статус: Посетитель)
Всего ответов отправлено: 6
Отвечает: John Freeman
Здравствуйте, KolesnikovAV!
1) читать про mailslots или банально winexec(pchar('net send ip "text"'),0);
2) Ничего - просто либо перекодировать на лету в cp866, либо проект перед компиляцией перекодировать в cp866(я вообще сразу в фаре пишу), для корректно поставленных виндов руссификатор нужен только в полноэкранном режиме(RTFM), для 9х не нужен вообще, для 2к/xp... autoexec.bat вообще не при делах, а для 9х знать уже надо.
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 21.04.2005, 02:21
Отвечает: sir henry
Здравствуйте, KolesnikovAV!
2. Консольное приложение - это типа DOS, следовательно и кодировка там должна быть досовской. Если Вы пишете консольную программу в IDE, то в ней у Вас кодировка виндоусная.
Самый простой способ пишите исходник в FAR'e (например). Там вновь создаваемый текстовый файл по умолчанию имеет кодировку ДОС.
Можно еще поменять кодировку консоли, но я это делать не рекомендую, т.к. в 9х консоли тогда будет отображаться абракадабра вместо русских букв.
Пример myprog.dpr:
{$APPTYPE CONSOLE}
Program myprog;
{Далее пишете то, что Вам нужно}
End.
После этого компилируете:
dcc32 myprog.dpr
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 21.04.2005, 05:49
Отвечает: Stamm
Здравствуйте, KolesnikovAV!
Я отвечу только на первый вопрос:
WinExeC(Pchar('Net Send '+IP+Message));
Ответ отправил: Stamm (статус: 1-ый класс)
Отправлен: 21.04.2005, 07:33
Отвечает: Rusland
Здравствуйте, KolesnikovAV!
2) скорее всего нужно выводить в Dos кодировке
Ответ отправил: Rusland (статус: 2-ой класс)
Отправлен: 21.04.2005, 09:47
Отвечает: Trer
Здравствуйте, KolesnikovAV!
2) можно использовать процедуры модуля Windows
- CharToOem - для преобразования текста на русском в кодировку консоли
- OemToChar - для обратного пребразования
Приложение:
Ответ отправила: Trer (статус: 1-ый класс)
Отправлен: 21.04.2005, 10:19 Оценка за ответ: 5 Комментарий оценки: Суппер, это то что мне было нужно.
Отвечает: And1
Здравствуйте, KolesnikovAV!
1) Для того чтобы отправлять сообщения через данную службу должны быть включены следующие службы: "Plug and Play", "Интерфейс NetBios", "Рабочая станция", "Удалённый вызов процедур (RPC)", "Служба сообщений". А отправлять сообщение можно командой net sent. Я сам когда-то писал такой "флудер", см код в приложении... Поясню код: Edit1 - Ip адрес, Edit2 - Сообщение, Edit3 - количество сообщений.
А по нажатию кнопки вызываем команду net sent (кстати, её синтаксис можно почитать если набрать в коммандной строке net sent /? )
Приложение:
Ответ отправил: And1 (статус: 1-ый класс)
Отправлен: 21.04.2005, 10:34 Оценка за ответ: 5 Комментарий оценки: Замечательно, огромное при огромное спасибо
Вопрос № 20064
Здраствуйте эксперты!!!
Подскажите пожалуйста вот я хочу сделать программу похожую на Microsoft access.
Так вот мне надо знать а как например из моей программы запустить БД сделанную на Access.
И где можно достать новые компаненты для Delphi 2005(7)
Спасибо за ранее!!!
Отправлен: 21.04.2005, 16:53
Вопрос задал: newinfo2005 (статус: 1-ый класс)
Всего ответов отправлено: 4
Отвечает: Алексей Владимирович
Здравствуйте, newinfo2005!
Работать с БД на Access в Delphi 7 можно стандартными компонентами. Просто подключаться при помощи BDE.
Ответ отправил: Алексей Владимирович (статус: 7-ой класс)
Отправлен: 22.04.2005, 09:41 Оценка за ответ: 4 Комментарий оценки: Это всё понятно но ты не ответил не на все вопросы и когда изучал БД работы на Delphi так там вообще не показано как это сделать!!!(из вопроса который я задал)
Отвечает: sir henry
Здравствуйте, newinfo2005!
1. Неважно, какой тип БД Вы собираетесь открывать, для этого есть несколько универсальных путей:
а) Классический. Использовать поставляемый с Дельфой движок баз данных, называемый BDE.
б) Тоже уже классический. Использовать поставляемые вместе с Дельфи компоненты для доступа к БД. Это ADO (универсальный), для InterBase целая палитра, COM-объекты для доступа к Microsoft Office (это конкретно для ACCESS).
в) Использовать компоненты разработанные кем-то для доступа к той БД, которую Вы выбрали.
Во всех трех случая алгоритм прост:
Вы устанавливаете соединение с БД, потом выбираете нужную Вам таблицу, потом данные из этой таблицы выводите в ВИЗУАЛЬНЫЙ компонент отображения данных.
Было бы неплохо, если бы Вы приобрели книгу по работе с БД в Дельфи, т.к. объем материала большой и в двух словах об этом не расскажешь.
2. Лучше всего для поиска новых компонентов подходит поисковик (например YANDEX, GOOGLE и.т.п.). Набираете в строке поиска "компоненты для delphi 2005" или "компоненты для delphi 7". На иностранных веб-сайтах подобный текст, естесствено, будет на английском.
Наиболее известные хранилища компонентов:
www.torry.net
www.delphikingdom.com
www.delphimaster.ru
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 22.04.2005, 11:38 Оценка за ответ: 5
Отвечает: And1
Здравствуйте, newinfo2005!
Самая большая библиотека компонентов для Delphi - www.torry.net. Но к сожалению на английском... А на счёт MS Access, то у Delphi (7) есть на вклдаке Servers компоненты для работы с приложениями Office и вызов функий для работы с этими компонентами идёт через OLE.
Ответ отправил: And1 (статус: 1-ый класс)
Отправлен: 22.04.2005, 14:18 Оценка за ответ: 3 Комментарий оценки: Моя программа работает без Access , а выполняет некоторые её функции!!!
Отвечает: CJ
Здравствуйте, newinfo2005!
:) Ого, насколько я знаю ТАКУЮ как Access никто не решался делать. :)
Тебе необходимо расположить на форме компоненты, с помощью которых ты будешь "запускать" свою БД, записать пару строк кода и вперед.
Ответ отправил: CJ (статус: Студент)
Отправлен: 24.04.2005, 10:53 Оценка за ответ: 4
Вопрос № 20069
Хочу присвоить компоненту имя (Name), которое хранится в переменной типа String, но эта переменная начинается с символов :#. Как отфильтровать эти символ или как присвоить компонету имя начиная с третьего символа переменной?
ListBox1.Name:=??????????????????????????
Отправлен: 21.04.2005, 20:18
Вопрос задал: source (статус: Посетитель)
Всего ответов отправлено: 6
Отвечает: John Freeman
Здравствуйте, source!
String это массив of char => String[c] и в цикл вида
outstr:='';
if length(instr)>0 then
for c:=1 to Length(instr) do begin
if instr[c]<>'#' then outstr:=outstr+instr[c];
end;
Это ПРИМЕРНЫЙ код, способов до фига.
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 21.04.2005, 20:27
Отвечает: Pushkin
Здравствуйте, source!
Если правильно понял вопрос, то:
1.
s := '';
for i := 1 to length(StringVariable) do begin
case StringVariable[i] of
#1..#47: begin end;
else s := s+VariableString[i];
end;
end;
ListBox1.Name := s;
2.
ListBox1.Name := Copy(StringVariable,3,Length(StringVariable)-2);
Ответ отправил: Pushkin (статус: 1-ый класс)
Отправлен: 21.04.2005, 22:31
Отвечает: Master135
Здравствуйте, source!
Функция Pos(искомая пдстрока,имя строки) возвращает № начала подстроки в строке или 0 если не найдена.
Delete(строка,№ позиции в строке,кол-во символов)
ST:String
while pos('#',ST)<>0 do
Delete(ST,pos('#',ST),1);
ListBox1.Name:=ST;
Ответ отправил: Master135 (статус: 3-ий класс)
Отправлен: 22.04.2005, 01:16
Отвечает: Stamm
Здравствуйте, source!
Попробуйте следующее(s-переменная типа String)
Listbox1.name:=Copy(s,3,Length(s));
Ответ отправил: Stamm (статус: 1-ый класс)
Отправлен: 22.04.2005, 08:17 Оценка за ответ: 5 Комментарий оценки: Идеальный вариант. Вы меня здорово выручили. Огромное Вам человеческое спасибо.
Отвечает: sir henry
Здравствуйте, source!
В Паскале есть отличная функция для этого дела:
Name:=Copy(Строка_откуда_надо_вырезать_часть_ее, Начальная_позиция_выреза, Количество_символов);
Вот ее и используйте.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 22.04.2005, 11:43
Отвечает: And1
Здравствуйте, source!
Ваша проблема решается следующим образом: понадобится только функция Delete (имя_переменной_строки, позиция_с_которой_начинается_удаление, количество_удаляемых_символов). Тогда в вашем случае будет та Delete (имя_переменной, 1, 2). Из переменной удаляется только два первых символа, а остальные символы остаются как есть.
Ответ отправил: And1 (статус: 1-ый класс)
Отправлен: 22.04.2005, 14:18