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

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


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

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

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

Выпуск № 333
от 23.12.2005, 20:00

Администратор:Калашников О.А.
В рассылке:Подписчиков: 239, Экспертов: 49
В номере:Вопросов: 7, Ответов: 16


Вопрос № 31694: Мой первый вопрос № 31656 Немогли бы вы подсказать как грамотно создать связь баз данных один-ко-многим. Либо если есть возможность дайте ссылку на данный материал в интернете. Заранее благодарю. Я сделал две таблицы Paradox,первая T...
Вопрос № 31697: Как в консольном приложении использовать NMSMTP и NMPOP3?...
Вопрос № 31701: Здравствуйте, уважаемые эксперты! Вопрос такой: как можно установить шрифт по нажатию на Button? Я знаю как это сделать в операционной системе Windows 9x, но в XP я не смог найти в реестре ветвь, по которой регистрируются шрифты ('SoftwareMi...
Вопрос № 31709: Здраствуйте уважаемые эксперты. и снова мне нужна ваша помощ мне нужно чтобы если в листбоксе есть 2 одинаковые записи то програма удалила бы одну из них, я пробовал реализовать это как написано в приложении но ничего невышло :(...
Вопрос № 31727: Здравствуйте! Подскажите, пожалуйста, как решить проблему: есть текстовый файл и Memo. Как в Memo из этого файла загрузить строки, но не все (LoadFromFile не подходит, т.к. тогда слишком много файлов - это вообще-то должны загружаться описания для кн...
Вопрос № 31738: Как прописать условие для проверки есть ли буфере, что нибудь. Maikl-1982@narod.ru...
Вопрос № 31763: Подскажите как производить чтение из файла пословно. Допустим есть файл (текстовый) и из него надо выделять слова: Например: Заголовок Таблица итог. f: TextFile; Begin AssignFile(f, nm); - а что дальше п...

Вопрос № 31.694
Мой первый вопрос № 31656
Немогли бы вы подсказать как грамотно создать связь баз данных один-ко-многим. Либо если есть возможность дайте ссылку на данный материал в интернете.
Заранее благодарю.

Я сделал две таблицы Paradox,первая Tovar (поля: Nomer(тип Autoincreament), Tovar(тип Alpha)),на поле Nomer поставил Required Field, и создал по нему индекс;
вторая таблица Prod (поля:NomerTov (тип Autoincreament), Kol( тип Long Integer), на поле NomerTov поставил Required Field, и создал по нему индекс;
далее выложил на форму DBGrid1(для таблицы Tovar ), DBGrid2 (для таблицы Prod); DataSource1,DataSource2; Table1,Table2 провел настройки их.
Стал заполнять MasterSource в Table2, MasterFields выбрал поле Nomer (таблицы Tovar) и поле NomerTov (таблицы Prod) и тут появилось окно
Table2: Field index out of range.

Помогите а то совсем замучался.
Отправлен: 17.12.2005, 19:50
Вопрос задал: Afini (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Afini!
Для поля Nomer таблицы Tovar должен быть создан ключ - уникальный индекс. Откроете таблицу в Database Dexctop, реструктуризация, поставите звездочку в колонке Key.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 18.12.2005, 07:21
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Вроде допетрил !
Полный респект!


Вопрос № 31.697
Как в консольном приложении использовать NMSMTP и NMPOP3?
Отправлен: 17.12.2005, 20:02
Вопрос задал: 34076 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, 34076!
Точно так-же как и в неконсольном: в строке Uses прописать соответствующий модуль, объявить переменные нужных типов, заполнить правильно их свойства и вперед. :)
Ответ отправил: sir henry (статус: Академик)
Отправлен: 18.12.2005, 07:24


Вопрос № 31.701
Здравствуйте, уважаемые эксперты!
Вопрос такой: как можно установить шрифт по нажатию на Button?
Я знаю как это сделать в операционной системе Windows 9x, но в XP я не смог найти в реестре ветвь, по которой регистрируются шрифты ('SoftwareMicrosoftWindowsCurrentVersionFonts'). Есть ли вообще универсальный для любой операционки способ? Помогите, кто чем может...
Отправлен: 17.12.2005, 20:53
Вопрос задал: Ярослав Николаевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Ярослав Николаевич!
Вам нужно установить шрифт в операционную систему или установить шрифт для определенного компонента?
Ответ отправил: sir henry (статус: Академик)
Отправлен: 18.12.2005, 07:26
Оценка за ответ: 3
Комментарий оценки:
Именно в операционку, а не для компонента.
Стал бы я спрашивать про реестр?


Вопрос № 31.709
Здраствуйте уважаемые эксперты.
и снова мне нужна ваша помощ
мне нужно чтобы если в листбоксе есть 2 одинаковые записи то програма удалила бы одну из них, я пробовал реализовать это как написано в приложении но ничего невышло :(

Приложение:

Отправлен: 17.12.2005, 22:45
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Romodos
Здравствуйте, Станислав!
Я полагаю, что вместо listbox.items[listbox.itemindex] надо использовать listbox.items[i]. А так всё верно
---------
FAQ me off!
Ответ отправил: Romodos (статус: Студент)
Отправлен: 17.12.2005, 23:27

Отвечает: Denisss
Здравствуйте, Станислав!
Ух, ну и код....
Рабочий смотрите в приложении.
Если хотите, чтобы программа удаляля строки без учета регистра, то вместо строки
if (Items[i] = Items[pred(i)]) then
введите
if (AnsiUpperCase(Items[i]) = AnsiUpperCase(Items[pred(i)])) then

Приложение:

Ответ отправил: Denisss (статус: Специалист)
Отправлен: 18.12.2005, 13:25

Отвечает: Schmak
Здравствуйте, Станислав!
Попробуйте так:

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
with listbox1 do
begin
Sorted:=true;
i:=0;
while i begin
while (i Items.Delete(i+1);
inc(i);
end;
end;
end;

---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 19.12.2005, 13:00


Вопрос № 31.727
Здравствуйте! Подскажите, пожалуйста, как решить проблему: есть текстовый файл и Memo. Как в Memo из этого файла загрузить строки, но не все (LoadFromFile не подходит, т.к. тогда слишком много файлов - это вообще-то должны загружаться описания для книг), а, например, с 3 по 5ую, для другого итема - с 5 по 7. Как это реализовать?
Отправлен: 18.12.2005, 02:41
Вопрос задал: Ваньков Петр Семенович (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: nimoid
Здравствуйте, Ваньков Петр Семенович!

При чем тут итемы, файлы? брр... Прально вопрос задавай. :)

Можно так:

Загружай файл в TStringList и бери от туда нужные строки вставляй в мемо.

//--------------------------------------------------
var
SList: TStringList;
begin
SList := TStringList.Create;
try
SList.LoadFromFile('путь к файлу');
Memo1.Lines.Add(SList.Strings[3]); // грузишь 3-ю строку в мемо
Memo1.Lines.Add(SList.Strings[4]); // грузишь 4-ю строку в мемо
finally
SList.Free;
end;
end;
//--------------------------------------------------

Можно конечн и по-другому... какие у тя файлы размером?
---------
Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и вперед... )
Ответ отправил: nimoid (статус: 6-ой класс)
Отправлен: 18.12.2005, 03:25
Оценка за ответ: 4
Комментарий оценки:
Я имел в виду итемы ListBox`а, в котором список книг, при выборе итема из списка в Memo грузится описание. Спасибо за ответ!

Отвечает: sir henry
Здравствуйте, Ваньков Петр Семенович!
Это делается загрузкой именно строк, а не файлов:
var
f: TextFile;
s: string;
Begin
AssignFile(f, 'Имя_файла.txt');
Reset(f);
While not Eof(f) Do
Begin
ReadLn(f, s);
{После прочтения строки, Вы ее сравниваете с шаблоном, если эта та строка, загружаете строку в мемо}
If Условие Then
Memo1.Lines.Add(s);
End;
End;
Больше никак.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 18.12.2005, 07:33
Оценка за ответ: 4
Комментарий оценки:
Большое спасибо!

Отвечает: REFERI
Здравствуйте, Ваньков Петр Семенович!
Просто можно пропустить ненужные строки - т.е. выполнять над ними те же операции что и со строками которые надо вывечти, но не выводя их. Например первые 3 строки просто прочитать а 3-5 не только читать но и выводить...
Или использовать функцию Setpos - установить позицию в файле и потом читать.
Посмотрите в справке - наберите file, string или pos - найдете что вам нужно и на примере посмотрите...
Удачи!
---------
Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: Студент)
Отправлен: 18.12.2005, 10:47
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Schmak
Здравствуйте, Ваньков Петр Семенович!
Загружайте данные из файла не с помощью Memo1.LoadFromFile, а с помощью readln. Например, если Вам надо считать с 5 по 7 строку то сначала 4 раза читаете данные из файла, затем 3 раза читаете и выводите в Memo1 при помощи метода items.add() и закрываете файл в конце.

---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 19.12.2005, 13:00

Отвечает: Ataman N. N.
Здравствуйте, Ваньков Петр Семенович!
Открываете файл
AsignFile(f,<FileName>);
Reset(f);
while not EOF(f) do
begin
//Читаете посторочно файл
ReadLn(f,s:String);//допустим так
//Если это строка 3-5 и т.д., то
Memo.Lines.Add(s);
end;
CloseFile(f);
Ответ отправил: Ataman N. N. (статус: 4-ый класс)
Отправлен: 21.12.2005, 14:45


Вопрос № 31.738
Как прописать условие для проверки есть ли буфере, что нибудь.

Maikl-1982@narod.ru
Отправлен: 18.12.2005, 10:33
Вопрос задал: Шишкин М.А. (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Шишкин М.А.!
В каком именно буфере? Потрудитесь объяснить, ведь буферы бывают разные.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 18.12.2005, 10:45

Отвечает: Ерёмин Андрей
Здравствуйте, Шишкин М.А. !
Вот самый простой способ:

Uses Clipbrd;
. . .
Clipboard.Open;
If Length(Clipboard.AsText) > 0 Then
Caption:='Что-то есть' Else Caption:='Буфер пуст';
Clipboard.Close;

---------
Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 18.12.2005, 11:02
Оценка за ответ: 5


Вопрос № 31.763
Подскажите как производить чтение из файла пословно.
Допустим есть файл (текстовый) и из него надо выделять слова:
Например:
Заголовок
Таблица
итог.

f: TextFile;
Begin
AssignFile(f, nm);

- а что дальше писать?
Отправлен: 18.12.2005, 18:06
Вопрос задал: Andrew (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Romodos
Здравствуйте, Andrew!
Ну дык и читаете до пробела, дальше новое слово. А специальной функции для пословного чтения нет.
Намётки в приложении. Не проверял, но должно работать. Суть в чём: если пробел или перевод строки, то следующее слово, иначе прибавляем символ к текущему слову.

Приложение:

---------
FAQ me off!

Ответ отправил: Romodos (статус: Студент)
Отправлен: 18.12.2005, 18:36

Отвечает: sir henry
Здравствуйте, Andrew!
Вам надо перебирать строку посимвольно. Если попадаются символы больше пробела, то он плюсуется к предыдущему. Если символ пробел и меньше, то пропускается, а слово записаное ранее кончается.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 18.12.2005, 19:23

Отвечает: Schmak
Здравствуйте, Andrew!
Можно вот так:
1) Считываем всю строку.
2) Ищем в строке 1-ый пробел, выделяем слово до этого пробела.
3) Запоминаем слово и удаляем его из строки вместе с пробелом.
4) Повторяем со 2-ого пункта пока в строке не останется пробелов. То что останется в строке будет последним словом.
В следующей программе приведена программа, ситывающая слова из файла, записанные через пробел и записывающая х в столбик.

Приложение:

---------
Не всё то Windows, что висит!

Ответ отправил: Schmak (статус: Студент)
Отправлен: 19.12.2005, 13:47


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

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

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

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

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


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


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

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

В избранное