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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

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

Чемпионы рейтинга экспертов в этой рассылке

Boriss
Статус: Академик
Рейтинг: 1127
∙ повысить рейтинг »
Jimhucksly
Статус: 5-й класс
Рейтинг: 791
∙ повысить рейтинг »
Тимошенко Дмитрий
Статус: Студент
Рейтинг: 489
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Delphi

Номер выпуска:1453
Дата выхода:28.10.2009, 12:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:575 / 209
Вопросов / ответов:6 / 6

Вопрос № 173582: Задан список целых чисел. Удалить все отрицательные элементы, распечатать....


Вопрос № 173583: Заданы два списка символов. В одном символы "TURBO", в другом - "PASCAL". Объединить два списка, распечатать....
Вопрос № 173586: Имеется текстовый файл. Создать новый файл,переформатировав исходное деление файла на строки так, чтобы каждая строка оканчивалась точкой, либо содержала 30 литер, если среди них нет точки....
Вопрос № 173587: В файле собраны сведения о поездах: N поезда С-Петербург - Москва, время ухода из С-Петербурга, признак вагона(купейный, плацкартный) и признак наличия билета (есть, нет). Распечатать эти сведения как меню. Распечатать номера поездов, уходящих...
Вопрос № 173588: Уважаемые эксперты помогите в написание программы. Компоненты: TMainMenu1, TMemo1, TOpenDialog1, TStatusBar1. В TMemo1 загружается произвольная программа на языке Object Pascal. Нужно вывести в TStatusBar1 panel[0] каталог анализируемого фай...
Вопрос № 173600: Необходимо составить такую программу: В Richedit вводим последовательность символов (единицы и нули), нажимаем на кнопку и программа создает след. звуковой wave-файл: синусоидальные или прямоугольные колебания частотой 50 гц. и последовательностью...

Вопрос № 173582:

Задан список целых чисел. Удалить все отрицательные элементы, распечатать.

Отправлен: 22.10.2009, 23:09
Вопрос задал: смирнов артем владимирович, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Евгений/Genia007/, Практикант :
Здравствуйте, смирнов артем владимирович.
К примеру можно сделать следующим образом: берём в richedit вводим числа, каждое число с новой строки, после нажатия кнопки перебираем все числа из списка и при нахождении отрицательного числа удаляем его, а затем готовый список распечатываем.
Код:
procedure
TForm1.Button1Click(Sender: TObject);
var
i: integer;
s: string;
begin
i:= 0;
while i <> RichEdit1.Lines.Count do // Пока i не будет равно количеству строк в richedit делаем
begin
s:= RichEdit1.Lines.Strings[i]; // Присваиваем переменной содержимое очередной строки
if StrToInt(s) < 0 then // Если число меньше 0 сделать
RichEdit1.Lines.Delete(i) // Удаляем строку с отрицательным числом
else
inc(i); // Увеличиваем счётчик строк на 1
end;
RichEdit1.Print(RichEdit1.Text); // Распечатывание содержимое richedit
end;

-----
Помогли тебе, помоги и ты.

Ответ отправил: Евгений/Genia007/, Практикант
Ответ отправлен: 23.10.2009, 17:18

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 255758 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 173583:

    Заданы два списка символов. В одном символы "TURBO", в другом - "PASCAL". Объединить два списка, распечатать.

    Отправлен: 22.10.2009, 23:09
    Вопрос задал: смирнов артем владимирович, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Евгений/Genia007/, Практикант :
    Здравствуйте, смирнов артем владимирович.
    Вашу задачу можно решить таким способом: В один Edit вводим первый набор символов, во второй второй набор символов, в третий выводится результат и распечатываем его на принтере, который стоит в системе по умолчанию.
    Код:
    uses Printers;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    Prn: TextFile;
    i: word;
    begin
    Edit3.Text:= Edit1.Text + ' ' + Edit2.Text; // Объеденение два списка
    AssignPrn(Prn); // Связали файловую переменную с принтером по умолчанию
    try
    Rewrite(Prn); // Открыли файл на запись
    try
    writeln(Prn, Edit3.Text); // Напечатали список
    finally
    CloseFile(Prn); // Закрыли файл
    end;
    except
    on EInOutError do // Елси ошибка выдать сообщение о ней
    MessageDlg('Ошибка печати.', mtError, [mbOk], 0);
    end;
    end;
    Прикрепленный файл: загрузить »

    -----
    Помогли тебе, помоги и ты.

    Ответ отправил: Евгений/Genia007/, Практикант
    Ответ отправлен: 25.10.2009, 14:01

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 255819 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 173586:

    Имеется текстовый файл. Создать новый файл,переформатировав исходное деление файла на строки так, чтобы каждая строка оканчивалась точкой, либо содержала 30 литер, если среди них нет точки.

    Отправлен: 22.10.2009, 23:10
    Вопрос задал: смирнов артем владимирович, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Евгений/Genia007/, Практикант :
    Здравствуйте, смирнов артем владимирович.
    Вот, что у меня вышло: загружаем в memo нужный нам текстовый файл, после чего происходит сборка всего содержимого из memo в одну строку и далее делим эту строку в соответствии с заданными условиями, выбираем файл для сохранения и распечатываем полученный результат.
    Код:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i, j: integer;
    s, s1: string;
    F: TextFile;
    begin
    s:= '';
    Memo1.Clear; // Отчистили мемо
    Richedit1.Clear; // Отчистили ричэдит
    If not OpenDialog1.Execute then exit; // Если диалог не открылся выход из процедуры
    Memo1.Lines.LoadFromFile(OpenDialog1.FileName); // Загрузили файл в мемо
    For i:= 0 to Memo1.Lines.Count - 1 do // П еребирать все строки мемо
    s:= s + Memo1.Lines.Strings[i]; // Собираем все строки в одну строку
    While Length(s) <> 0 do // Пока длина строки не равна 0 делаем
    begin
    If Length(s) > 30 then // Если длина строки больше 30
    begin
    j:= Pos('.', s); // Ищем точку в строке
    if j > 30 then
    s1:= Copy(s, 0, 30) // Если точка находится дальше 30 литер копируем 30 литер в переменную
    else
    If j <> 0 then
    s1:=Copy(s, 0, j) // Копируем строку до точки
    else
    s1:=Copy(s, 0, Length(s)); // Копируем всю строку
    RichEdit1.Lines.Add(s1); // Добавляем строку в ричедит
    end
    else
    begin
    While Length(s) <> 0 do // Пока длина строки не равна 0 делаем
    begin
    j:= Pos('.', s); // Ищем точку в строке
    If j <> 0 then
    s1:=Copy(s, 0, j) // Копируем строку до точки
    else
    s1:=Copy(s, 0, Length(s)); // Копируем всю строку
    RichEdit1.Lines.Add(s1); // Добавляем строку в ричедит
    Delete(s, 1, Length(s1)); // Удаляем из строки количество обработанных символов
    end
    end;
    Delete(s, 1, Length(s1)); // Удаляем из строки количество обработанных символов
    end;
    If OpenDialog1.Execute then // Открыть диалог выбора
    begin
    AssignFile(F,OpenDialog1.FileName); // Связываем файловую переменную f с именем файла из диалога
    Rewrite(F); // Создаём новый файл
    For i:= 0 to Richedit1.Lines.Count - 1 do // Перебираем все строки комбобокса
    Writeln(F, Richedit1.Lines.Strings[i]); // Записываем в файл строку из комбобокса
    CloseFile(F); // Закрыли файл
    end;
    Richedit1.Print(Richedi t1.Text); // Рапечатать ричэдит
    end;
    Прикрепленный файл: загрузить »

    -----
    Помогли тебе, помоги и ты.

    Ответ отправил: Евгений/Genia007/, Практикант
    Ответ отправлен: 23.10.2009, 19:21

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 255761 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 173587:

    В файле собраны сведения о поездах: N поезда С-Петербург

    - Москва, время ухода из С-Петербурга, признак вагона(купейный, плацкартный) и признак наличия билета (есть, нет). Распечатать эти сведения как меню. Распечатать номера поездов, уходящих после введённого времени. Распечатать номера поездов на которые есть билеты данного типа.

    Отправлен: 22.10.2009, 23:11
    Вопрос задал: смирнов артем владимирович, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Евгений/Genia007/, Практикант :
    Здравствуйте, смирнов артем владимирович.
    Вот что я могу Вам предложить: все сведения собраны в базу данных access и все выборки происходят при помощи query
    Код:
    uses Printers;

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    var
    Prn: TextFile;
    i: word;
    begin
    ADOQuery1.Close; // Закрыть запрос
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Select * from poezd ORDER BY otprav'); // Добавление новых значений в запрос
    ADOQuery1.Open; // Открыть запрос
    AssignPrn(Prn); // Связали файловую переменную с принтером по умолчанию
    try
    Rewrite(Prn); // Открыли файл на запись
    try
    if ADOQuery1.RecordCount>0 then // Проверка результата запроса
    begin
    ADOQuery1.First; // Переход на первую запись в запросе
    while not ADOQuery1.Eof do // Делать пока не будет конец запроса
    begin
    writeln(Prn, ADOQuery1WideStringField.Value); // Напечатали строку
    writeln(Prn, ' ' + ADOQuery1Firm.Value); // Напечатали строку
    writeln(Prn, ' ' + TimeToStr(ADOQuery1Otprav.Value)); // Напечатали строку
    writeln(Prn, ' ' + ADOQuery1VagKup.Value); // Напечатали строку
    writeln(Prn, ' ' + ADOQuery1BiletKup.Value); // Напечатали строку
    writeln(Prn, ' ' + ADOQuery1VagPlach.Value); // Напечатали строку
    writeln(Prn, ' ' + ADOQuery1BiletPlach.Value); // Напечатали строку
    ADOQuery1.Next; // Переход на следующюю запись запроса
    end;
    end;
    finally< br> CloseFile(Prn); // Закрыли файл
    end;
    except
    on EInOutError do // Елси ошибка выдать сообщение о ней
    MessageDlg('Ошибка печати.', mtError, [mbOk], 0);
    end;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var
    Prn: TextFile;
    i: word;
    begin
    ADOQuery1.Close; // Закрыть запрос
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Select * from poezd where otprav > tim ORDER BY otprav'); // Добавление новых значений в запрос
    ADOQuery1.Parameters.ParamByName('tim').Value:= StrToTime(MaskEdit1.Text);
    ADOQuery1.Open; // Открыть запрос
    AssignPrn(Prn); // Связали файловую переменную с принтером по умолчанию
    try
    Rewrite(Prn); // Открыли файл на запись
    try
    if ADOQuery1.RecordCount>0 then // Проверка результата запроса
    begin
    ADOQuery1.First; // Переход на первую запись в запросе
    while not ADOQuery1.E of do // Делать пока не будет конец запроса
    begin
    write(Prn, ADOQuery1WideStringField.Value +', '); // Напечатали строку
    ADOQuery1.Next; // Переход на следующюю запись запроса
    end;
    end;
    finally
    CloseFile(Prn); // Закрыли файл
    end;
    except
    on EInOutError do // Елси ошибка выдать сообщение о ней
    MessageDlg('Ошибка печати.', mtError, [mbOk], 0);
    end;
    end;

    procedure TForm1.Button3Click(Sender: TObject);
    var
    Prn: TextFile;
    i: word;
    s: string;
    begin
    case RadioGroup1.ItemIndex of
    0: s:= 'BiletKup';
    1: s:= 'BiletPlach';
    end;
    ADOQuery1.Close; // Закрыть запрос
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Select * from poezd where '+s+' = bil ORDER BY №'); // Добавление новых значений в запрос
    ADOQuery1.Parameters.ParamByName('bil'). Value:= 'есть';
    ADOQuery1.Open; // Открыть запрос
    AssignPrn(Prn); // Связали файловую переменную с принтером по умолча нию
    try
    Rewrite(Prn); // Открыли файл на запись
    try
    if ADOQuery1.RecordCount>0 then // Проверка результата запроса
    begin
    ADOQuery1.First; // Переход на первую запись в запросе
    while not ADOQuery1.Eof do // Делать пока не будет конец запроса
    begin
    write(Prn, ADOQuery1WideStringField.Value +', '); // Напечатали строку
    ADOQuery1.Next; // Переход на следующюю запись запроса
    end;
    end;
    finally
    CloseFile(Prn); // Закрыли файл
    end;
    except
    on EInOutError do // Елси ошибка выдать сообщение о ней
    MessageDlg('Ошибка печати.', mtError, [mbOk], 0);
    end;
    end;

    procedure TForm1.Button4Click(Sender: TObject);
    begin
    ADOQuery1.Close; // Закрыть запрос
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Select * from poezd ORDER BY otprav'); // Добавление новы х значений в запрос
    ADOQuery1.Open; // Открыть запрос
    end;
    Прикрепленный файл: загрузить »

    -----
    Помогли тебе, помоги и ты.

    Ответ отправил: Евгений/Genia007/, Практикант
    Ответ отправлен: 25.10.2009, 18:16

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 255831 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 173588:

    Уважаемые эксперты помогите в написание программы.
    Компоненты: TMainMenu1, TMemo1, TOpenDialog1, TStatusBar1.
    В TMemo1 загружается произвольная программа на языке Object Pascal.
    Нужно вывести в TStatusBar1 panel[0] каталог анализируемого файла.

    Отправлен: 22.10.2009, 23:18
    Вопрос задал: Спиридонов Данил Сергеевич, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Selax, 4-й класс :
    Здравствуйте, Спиридонов Данил Сергеевич.
    Вы это хотели?
    StatusBar1.panel[0].Text= ExtractFilePath(OpenDialog1.FileName);

    Ответ отправил: Selax, 4-й класс
    Ответ отправлен: 23.10.2009, 00:49

    Оценка ответа: 5
    Комментарий к оценке:
    Точно.

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 255738 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 173600:

    Необходимо составить такую программу: В Richedit вводим последовательность символов (единицы и нули), нажимаем на кнопку и программа создает след. звуковой wave-файл: синусоидальные или прямоугольные колебания частотой 50 гц. и последовательностью амплитуд в зависимости от набора символов в Richedit. Поясню на примере.
    Например мы вводим в Richedit след. набор символов: 10011101
    Нажимаем на кнопку и программа создает звуковой файл такой амплитуды.

    Отправлен: 23.10.2009, 12:22
    Вопрос задал: Phoenix707, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Евгений/Genia007/, Практикант :
    Здравствуйте, Phoenix707.
    Я предлагаю взять готовые два звука, которые удовлетворяют единичке и нулю (добавляем их в ресурсный файл), я думаю что постоянно синтезировать одни и те же звуки (ноль один) лишние накладные расходы процессорного времени, а так эти два звука уже будут находиться в оперативной памяти и браться от туда по мере надобности.
    Код:
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, ComCtrls, mmsystem;

    type
    TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    stop:boolean;

    implementation

    {$R *.dfm}
    {$R MyWave.res}

    procedure TForm1.Button2Click(Sender: TObject);
    var
    i, j: word; s:string;
    begin
    stop:= false;
    while not stop do
    begin
    For i:=0 to RichEdit1.Lines.Count - 1 do
    begin
    s:= RichEdit1.Lines.Strings[i];
    for j := 0 to Length(s) - 1 do
    case s[j] of
    '0': PlaySound('1_2',hInstance,SND_RESOURCE or snd_sync);
    {Здесь обрабатываем звук, можно добавить в ресурсный файл нужные фрагменты звука и т.п.}
    '1': PlaySound('2_2',hInstance,SND_RESOURCE or snd_sync);
    end;
    end;
    application.ProcessMessages;
    end;

    end;

    procedure TForm1.Button3Click(Sender: TObject);
    begin
    stop:= true;
    end;

    end.
    Дл я создания ресурсного файла нужно сделать простой текстовый файл с содержимым: 'НАЗВАНИЕ ФАЙЛА' WAVE 'название файла'.wav, затем переименовать этот текстовый файл в MyWave.rc и при помощи внешнего компилятора (идёт в комплекте с delphi) создать файл MyWave.RES, для этого в командной строке переходим в директорию с нашими файлами wave и MyWave.rc, после чего вводим команду "brcc32.exe MyWave.rc" и всё, получаем файл MyWave.RES. Прикрепленный файл: загрузить »

    -----
    Помогли тебе, помоги и ты.

    Ответ отправил: Евгений/Genia007/, Практикант
    Ответ отправлен: 27.10.2009, 11:47

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 255907 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.10 от 26.10.2009

    В избранное