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

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


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

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

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

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

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

Номер выпуска:1454
Дата выхода:29.10.2009, 12:30
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:575 / 210
Вопросов / ответов:1 / 2

Вопрос № 173617: Здравствуйте уважаемые эксперты! Есть такое задание, постараюсь объяснить... Нужно создать редактор для компилятора MASM (assembler). За меня решать задание не нужно, просто объясните пожалуйста как это сделать. Ведь если я не ошибаюсь, нуж...



Вопрос № 173617:

Здравствуйте уважаемые эксперты! Есть такое задание, постараюсь объяснить...

Нужно создать редактор для компилятора MASM (assembler). За меня решать задание не нужно,
просто объясните пожалуйста как это сделать. Ведь если я не ошибаюсь, нужно это
делать посредством коммандной строки. Меня интересует как средствами
Delphi сделать следующее(скомпилировать и т.д.)

1. Перейти на диск, например выполнить команду D:\
2. Выполнить команду masm prog1.asm

т.е. выолнять такого рода команды... Также нужно фиксировать результат выполнения этих команд в программе,
т.е. чтобы например на Memo отображалось то, что и в cmd в результате выполнения команд.
Или есть другие варианты?

Отправлен: 23.10.2009, 22:15
Вопрос задал: Николай // Programmator , Студент
Всего ответов: 2
Страница вопроса »


Отвечает Selax, 4-й класс :
Здравствуйте, Николай // Programmator .
Не совсем понятен вопрос: Вам нужен редактор кода? Посмотрите в демках Делфи пример RichEdit.
1. Перейти на диск или директорию можно выполнив функцию function SetCurrentDir ( const Dir : string ) : Boolean;
2. Выполнить команду можно либо функцией ShellExecute(нужно добавить в uses ShellApi) либо CreateProcess
Как выводить в memo результат выполнения команд можно посмотреть по ссылке в приложении

Приложение:

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

Оценка ответа: 5
Комментарий к оценке:
Спасибо)))

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

    Пример командной строки в делфи:




    procedure RunDosInMemo(CmdLine: string; AMemo: TMemo);
    const
    ReadBuffer = 2400;
    var
    Security: TSecurityAttributes;
    ReadPipe, WritePipe: THandle;
    start: TStartUpInfo;
    ProcessInfo: TProcessInformation;
    Buffer: Pchar;
    BytesRead: DWord;
    Apprunning: DWord;
    begin
    Screen.Cursor := CrHourGlass;
    Form1.Button1.Enabled := False;
    with Security do
    begin
    nlength := SizeOf(TSecurityAttributes);
    binherithandle := true;
    lpsecuritydescriptor := nil;
    end;
    if Createpipe(ReadPipe, WritePipe,
    @Security, 0) then
    begin
    Buffer := AllocMem(ReadBuffer + 1);
    FillChar(Start, Sizeof(Start), #0);
    start.cb := SizeOf(start);
    start.hStdOutput := WritePipe;
    start.hStdInput := ReadPipe;
    start.dwFlags := STARTF_USESTDHANDLES +
    STARTF_USESHOWWINDOW;
    start.wShowWindow := SW_HIDE;

    if CreateProcess(nil,
    PChar(CmdLine),
    @Security,
    @Security,
    true,
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    start,
    ProcessInfo) then
    begin
    repeat
    Apprunning := WaitForSingleObject
    (ProcessInfo.hProcess, 100);
    ReadFile(ReadPipe, Buffer[0],
    ReadBuffer, BytesRead, nil);
    Buffer[BytesRead] := #0;
    OemToAnsi(Buffer, Buffer);
    AMemo.Text := AMemo.text + string(Buffer);

    Application.ProcessMessages;
    until (Apprunning <> WAIT_TIMEOUT);
    end;
    FreeMem(Buffer);
    CloseHandle(ProcessInfo.hProcess);
    CloseHandle(ProcessInfo.hThread);
    CloseHandle(ReadPipe);
    CloseHandle(WritePipe);
    end;
    Screen.Cursor := CrDefault;
    Form1.Button1.Enabled := True;
    end;


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Memo1.Clear;
    RunDosInMemo(edit1.Text, Memo1);
    end;

    Приложение:

    Ответ отправил: Akahaos, 1-й класс
    Ответ отправлен: 24.10.2009, 17:36

    Оценка ответа: 4
    Комментарий к оценке:
    А весь проект можно?

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


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

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

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

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

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

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

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


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

    В избранное