Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi

Автор: dimnast
Дата сообщения: 14.02.2006 10:53
RostY
Понимаешь, самое смешное, что я так уже пытался...
Вот мой вариант:
-------
With Printer do
begin
PageHeight:=110;
PageWidth:=110;
Orientation:=poLandscape;
end;
-------
А вот полученный результат:
_____
[Error] alMain.pas(999): Cannot assign to a read-only property
[Error] alMain.pas(1000): Cannot assign to a read-only property
-------
Из чего вывод, что свойства PageHeight и PageWidth только для чтения....
И что же делать?
Автор: dyr farot
Дата сообщения: 14.02.2006 11:20
делай как я
Автор: YuRRiX
Дата сообщения: 14.02.2006 11:42
Спасибо за инфу по интерфейсам. Но проблема в том, что судя по статье необходимо знать реальную структуру объекта, который вызываешь, а я распологаю лишь коротким фрагментом на басике...
_________________________________________________________________________
CreateClsid "9C4A7C00-68BF-42CE-B224-C8D6598004B1", "Same.Object"

On Error GoTo ErrSetObj
Set oRcv = CreateObject("Same.Object", "SERVER")
Set oMsg = oRcv.Msg

' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
oMsg.Numbers = arrNumbers ' массив номеров
oMsg.Message = Me.txtMsg.Text ' текст сообщения
oMsg.Operator = "mogilev" ' имя оператора
lRet = oRcv.AddMessage(oMsg) ' добавление сообщения в коллекцию
' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Select Case lRet
....................................
Case Else
' lRet - идентификатор сообщения в коллекции
' Set inMsg = oRcv.GetMessage(lRet) - возвращает соответствующее сообщение,
' если оно еще не ушло абоненту
sMsg = "Сообщение принято!"
End Select
_________________________________________________________________________

И как тут быть?
Автор: dimnast
Дата сообщения: 14.02.2006 11:47
dyr farot

DevMode: PDevMode; - что это такое и с чем едят? В хелпе delphi 6 ничего не нашел.
Автор: vshersh
Дата сообщения: 14.02.2006 11:48
YuRRiX
Используй Project\Import Type Library...
Создашь интерфейсный юнит -- приводи и вызывай...
Автор: YuRRiX
Дата сообщения: 14.02.2006 11:56
Интересно... А как же тогда быть, если объект на другой машине... Я его импортировать не могу.. Или могу?
Автор: vshersh
Дата сообщения: 14.02.2006 11:58
YuRRiX
Пойди на другую машину.... Импортируй.
Автор: RostY
Дата сообщения: 14.02.2006 12:02
dimnast
действительно...
скачай drkb и поищи. Там есть что-то типа

Ниже приведены некоторые участки кода, позволяющие изменять настройки принтера. Тот код, который позволяет менять установки, позволяет также вам узнать принцип управления настройками. Смотри документацию по структурам ExtDeviceMode, TDEVMODE и escape функциям принтера GETSETPAPERBINS и GetDeviceCaps().
Один из путей изменения установок принтера перед печатью документа - изменение devicemode (режим устройства) принтера.

Пример:
--------------------------------------------------------------------------------
var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin

Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then begin
pDMode^.dmFields := pDMode^.dmFields or DM_COPIES;
pDMode^.dmCopies := 5;
GlobalUnlock(hDMode);
end;
GlobalFree(hDMode);
end;
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.BeginDoc;
Printer.Canvas.TextOut(100,100, 'Тест 1');
Printer.EndDoc;
Автор: YuRRiX
Дата сообщения: 14.02.2006 12:04
Между моей машиной и той 200 км оптоволокна и пару километров витой пары...
Автор: vshersh
Дата сообщения: 14.02.2006 12:07
YuRRiX
Ну можешь попробовать самостоятельно описать интерфейс - на основе имеющейся информации.
Но я бы не рекомендовал этого делать...
Автор: yuraskas
Дата сообщения: 14.02.2006 12:34
Добрый день, вопрос такой:
на форме есть Edit1, в которое вводиться что-либо для поиска этого в текстовом файле.
Как сделать, чтобы вводимое слово для поиска не было чувствительно к регистру?
Автор: vshersh
Дата сообщения: 14.02.2006 12:37
yuraskas
Дык а слово-то здесь не причем...
Все зависит от того как ты будешь искать....
Бери, например, приводи свой файл к апперкэйсу и ищи апперкэйс введенного слова...
Автор: dimnast
Дата сообщения: 14.02.2006 12:46
RostY
А что такое PDMode : PDEVMODE и где можно посмотреть варианты свойств вроде dmFields и прочее?
Автор: RostY
Дата сообщения: 14.02.2006 13:02
dimnast

можеш покопаться в windows.pas:
_devicemodeA = packed record
dmDeviceName: array[0..CCHDEVICENAME - 1] of AnsiChar;
dmSpecVersion: Word;
dmDriverVersion: Word;
dmSize: Word;
dmDriverExtra: Word;
dmFields: DWORD;
dmOrientation: SHORT;
dmPaperSize: SHORT;
dmPaperLength: SHORT;
dmPaperWidth: SHORT;
....
Я думаю, в MSDN это должно быть описано, но проверить не имею возможности

2. _http://www.torry.net/pages.php?id=193
EDSPrint v.3.2 SWS 33 k 06 Aug 1997
By Eminent Domain Software. EDSPrint enables the Delphi developer to programmtically set several printer properties including page size (i.e. Legal, Letter), printer resolution, and more.
Fully functional
Source: Included

и т.д... куча всяких Тпринтеров с сорцами

Powerwhizz Printer Component 1.0 (_http://www.aptrio.com/Development/IDEs-Coding-Utilities/powerwhizz-printer-component-2698.html)
Автор: yuraskas
Дата сообщения: 14.02.2006 13:03
Ок, с этим понятно, а посложнее вопрос.
У меня 2 текстовых файла, в первом: телефон, улица, фамилия, только вместо улицы цифра. А во втором файле название улицы и соотвествующая ей цифра. (ну типа данные взяты из access базы, где они были разбиты на две таблицы.)

Даные поиска у меня выводятся в поле memo, а как сделать чтобы вместо цифры улицы подставлялось само название улицы?
Автор: Z MeZe
Дата сообщения: 14.02.2006 13:04
yuraskas

Цитата:
Как сделать, чтобы вводимое слово для поиска не было чувствительно к регистру?

vshersh прав:

Цитата:
Все зависит от того как ты будешь искать....


Посмотри модуль работы со строками. Теми функциями можно решить твою проблему... имного больше :
нттр://rapidshare.de/files/13243140/QStrings.zip.html

Добавлено:
yuraskas

Цитата:
а как сделать чтобы вместо цифры улицы подставлялось само название улицы

Дык загружай файл с индексами и названиями улиц - и вперед, вместо цифр выводить название по условию...
Автор: vshersh
Дата сообщения: 14.02.2006 13:10
yuraskas
По-моему ты пытаешься решить проблему лукапов в наборе данных...
Не стоит этого делать -- все сделано до тебя! :-D
--
но если всетаки надо, то опять же, какие проблемы: ищешь во втором файле цифру, вытаскиваешь наименование улицы, а потом при выводе в мемо вместо номера улицы выводишь ее наименование....

Но я бы воспользовался каким-нить датасетом... Есть кстати отличный компонент ASCII-датасет. Можешь поискать в варезнике.
Автор: yuraskas
Дата сообщения: 14.02.2006 13:10
ок, попробую

Добавлено:
Вообще конечно с датасетом лучше, но я не знаю как текстовый файл перевости в таблицу Paradox.
Автор: RostY
Дата сообщения: 14.02.2006 13:23
yuraskas
a) while not eof do
begin
readln (f...)
Append;
Edit;
FieldByName('').AsString:=...
Post;
end;

b) скопировать из текстового файла вставить в Ексель и сохранить как dbf.

p.s. мне кажется, загнать текст в ДБ намного проще, чем организовать lookup'ы из текстовых файлов
Автор: SERGE_BLIZNUK
Дата сообщения: 14.02.2006 15:37
yuraskas
Я уже тут консультировал одного деятеля. Тоже из базы всё выгружал в текст и с ним работал - деревья строил, поиск организовывал... ;-))

Это в корне НЕВЕРНЫЙ подход!


Цитата:
p.s. мне кажется, загнать текст в ДБ намного проще, чем организовать lookup'ы из текстовых файлов


Именно так! Любым из способов, предложенных RostY делаешь ЛЮБУЮ базу данных. я бы ещё третий способ добавил - в Access'е сразу можно выгрузить в DBF базу.
а можно в Excel и потом сохранить в DBF.
Это даст:
- упрощение кода (ибо как вам верно сказали, всё уже придумано до вас!)
- ускорение работы (в разы если не в десятки раз)
- большая гибкость и ошибкоустойчивость (исходный текстовый файл пользователю так легко подредактировать ;-)))

А ежели вопросы возникнут - смело тут их и задавайте (ну, или книжку почитайте, вроде Программирование баз данных на Дельфи, или "Delphi. Разработка баз данных"
посмотрите, кстати, тут - http://dfni.dp.ua/books/load.php?ty=delphi
Да вообще то чего, чего, а книжек по Дельфи в сети много...)

Удачи.
Автор: smus811
Дата сообщения: 14.02.2006 18:50

Цитата:

Цитата:GetCurrentDir

Возвращает текущую директорию, не факт что это будет директория проекта.
особенно если запускать с ярлыка

А, эт точно, сейчас проверил.
Автор: SergeBS
Дата сообщения: 15.02.2006 11:46
yuraskas
Не занимайся дурной работой. Подключайся к Access-базе (например через ADO) и работай с таблицами. Тут тебе и поиск быстрый, и подстановка номер-улица и просмотр с какой хочешь последовательностью. Имея Access-базу работать с выдранными данными в виде текста просто глупо.

SERGE_BLIZNUK
Зачем из базы делать базу другого формата? Лишняя работа.


Добавлено:
yuraskas
Вдогонку: Книжки Фленова брать не советую:
1. С грубыми ошибками.
2. Содержание - либо по F1 переводом чего попало, но конечно не всего help(Библия), либо содержание хинтов из FAQ (глазами хакера).
Плюс терминология хромает тоже. Эти 2 я полистал.
Д2005 - не смотрел и скачивать не собираюсь, т.к. предполагаю что макулатура, а тратить трафик на макулатуру не хочу.
Автор: dartvaider
Дата сообщения: 15.02.2006 13:27
SergeBS
Вопрос можно ли работать с Делфи 7 с помощью компонента АДО с Базой Access по сети?
И как это будет происходить в многопользовательском режиме одновременно?
Т.Е. БД можно подключить через адо, указав единый сетевой путь, или же просто запускат по сети откомпиленый ЕКЗЕШНИК пользователям и работать с ним тоже по сети?

Просто не хочеться на терминал это всё вешать, хотелось бы без мидаса сделать НА mdb файлах сетевую версию, но не знаю будет ли работать..?
Автор: dyr farot
Дата сообщения: 15.02.2006 16:43
по сети ( в прямом смысле этого слова ) -- нет.
аксес -- файловая база данных.
причем многопользовательскую работу он тоже не особо любит...
Автор: SergeBS
Дата сообщения: 15.02.2006 16:55
dartvaider

Цитата:
Вопрос можно ли работать с Делфи 7 с помощью компонента АДО с Базой Access по сети?

Можно но НЕ советую. Access - MS Jet движок - слаб, с урезанным SQL и не потянет большие объемы. И вдобавок если рухнет, то с большой вероятностью навсегда угробит данные. У него, насколько я знаю, нет ACID а потому FireBird/MySQL тебе в руки... С моей точки зрения MySQL поприятнее.
Добавлю: сетевое приложение - это не многопользовательское. Разные термины. Читай кусочек:

Цитата:

Я назвал его сервер…

Ура! Свершилось! С помощью лома и чьей-то матери (а кто похитрей – с помощью ErWin или BpWin) структура базы данных разработана. И даже написана программа, которая что-то из нее показывает. И даже редактировать записи можно! Но начальство уже не хочет просто персональных баз данных. Им подавай общую на всех, и чтобы каждый видел только то, что ему положено.
И тут пришло время наступить на другие грабли: положить БД в виде толпы dbf-ок, или одного mdb/gdb-файла куда-нибудь, где всем видно. А потом приляпать везде хитрое поле, чтобы каждую запись можно было редактировать кому-то одному. А можем и не приляпывать – само все образуется. Будем средствами программы блокировать от всех прочих запись, пока кто-то один в нее пишет. FoxPro это умеет. И опять-таки, если так поступить, то сразу проблем может и не возникнет. Проблемы будут потом, причем гораздо раньше, чем в случае с НФ, и гораздо тяжелее. Сменить место работы на более оплачиваемое можно не успеть J. База данных будет периодически терять записи, искажать их, а может и вообще полностью рухнуть с соответствующим приказом по предприятию. Хотя вовсе не обязательно, что это произойдет в первую же неделю эксплуатации. Процесс носит чисто вероятностный характер.
В этом случае правильное решение задачи только одно: сервер. Но не тот сервер, у которого диск всем по сети виден, а сервер баз данных. Например, что-либо из Oracle, MS SQL, InterBase, MySQL, Advantage DS, DB/2 … Эта технология называется «клиент-сервер». Что конкретно из серверов выбрать – зависит от задачи и личных пристрастий. В наше время всяких серверов развелось почти столько же, сколько языков программирования. А может и больше. Не знаю, не считал. Навскидку цифры близкие. Главное не впасть в крайность. Простейший пример такой крайности: установить Oracle и на нем вести базу данных заводской художественной библиотеки – кто какую книгу взял. Это будет как на 10-тонной фуре везти 5 кило песку. Если конечно у вас не 1.000.000 работников и не 1.000.000 книг J. Такой завод тоже крайность. И даже для такого завода Oracle применять не обязательно. Но уже можно.

Автор: Farkhad
Дата сообщения: 15.02.2006 17:35
Как сделать чтобы в DBGrid отобразилось содержимое таблицы (которая лежит в интербейзе) используя dbExpress?

Я ложу из вкладки dbExpress (другие не рассматриваются):
1. SQLConnection
2. SQLTable

Теперь из вкладки DataAccess:
1. DataSource

Потом из DataControls ложу DBGrid.

Задаю соединение для SQLConnection, нажимаю проверить, все работает.
Задаю SQLTable соединение, указываю нужную таблицу (соответственно соединение действительно работает), ставлю Active в true, приэтом никаких ошибок не выскакивает.

Теперь в DataSource указываю DataSet = SQLTable1.

Далее переходим на DBGrid. Как только я указываю ему DataSource = DataSource1 вылетает ошибка:
operation not allowed on a unidirectional dataset.


Структура таблицы в IB:
create table test (
fio char(10)
)
Автор: LordMAD
Дата сообщения: 16.02.2006 07:11
Farkhad

Цитата:
Я ложу из вкладки dbExpress (другие не рассматриваются):
1. SQLConnection
2. SQLTable

Вместо TSQLTable тебе нужен TSimpleDataSet или TSQLTable + TDataSetProvider + TClientDataSet. А вообще RTFM.
Автор: BABAYKA
Дата сообщения: 17.02.2006 13:34
Люди добрые подскажите плиз начинающему......Хочу сделать чтобы при коннекте к базе (FB) выходила моя форма для ввода логина и пароля....с компонентами IB все ОК....а вот с компанентами FIB Plus проблем.....при компиляции глав.формы ругается что не задекларированны оба Edit (EdLogin и EdPassword) находящиеся на форме (FLogin) ввода.....вот моя писанина:

procedure TEmForm.BtnConnect(Sender: TObject);
begin
if FLogin.ShowModal=mrOK then
begin
pFIBDatabase1.ConnectParams.UserName := EdLogin.Text;
pFIBDatabase1.ConnectParams.Password := EdPassword.Text;
pFIBDatabase1.Connected:=True;
end;
end;

Заранее всем спасибо....
Автор: EZH
Дата сообщения: 17.02.2006 13:41
BABAYKA
Я так понимаю это код из главной формы, так а ты пробовал писать
pFIBDatabase1.ConnectParams.UserName := FLogin.EdLogin.Text ?
Не понятно какое тут вообще отношение к возникшей проблеме имеют компоненты IB и FIBPlus.
Автор: BABAYKA
Дата сообщения: 17.02.2006 13:52
EZH
заработало....только после появления моей формы выскакивает и стандартная форма для ввода пароля....видимо что-то в настройках pFIBDatabase1....сейчас посмотрю........спасибо........


Цитата:
Не понятно какое тут вообще отношение к возникшей проблеме имеют компоненты IB и FIBPlus.


и всамом деле - в этой ситуации не причем..., что думал то и написал....

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Вероятность одинакового CRC32


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.