IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Про консоль, Использование оной из GUI
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Денис

Репутация: -  0  +


С возвращением! Я сразу с вопросом - допустим, процедура:
 
procedure Delete;

var

Console:Handle;
Dummy:PSecurity_Attributes;

begin

Dummy:=nil; //этот способ я взял с freepascal.ru , если ставить непосредственно в функцию - компилятор
//ругаеццо

AllocConsole;

Console:=CreateConsoleScreenBuffer(GENERIC_READ+GENERIC_WRITE,
0,Dummy^,CONSOLE_TEXTMODE_BUFFER,nil);

SetConsoleActiveScreenBuffer(Console);

write('Некий текст');

readkey;

FreeConsole;

end;




При её вызове (вследствие нажатия на кнопку) открывается окно консоли, но текста в нем нет. Более того, если закрываю консоль, то закрывается и приложение.

Скажите, пожалуйста, что не так?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


А какие модули юзаешь?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
Более того, если закрываю консоль, то закрывается и приложение.
GUI - приложение сейчас не закрывается, я проверил...
procedure Delete;

var
h, Std_In : Handle;
foo: ^SECURITY_ATTRIBUTES;

procedure ConWrite(s : string);
var i, j, l: longint;
begin
l := system.length(s);
i := 1;
repeat
WriteConsole(h, @s[i], l, @j, nil);
dec(l, j); inc(i, j);
until l = 0;
end;

function ConRead: string;
var
i, j, l: longword;
s: string;
ir: INPUT_RECORD;
begin
repeat
repeat
ReadConsoleInput(Std_In, ir, 1, j);
until ir.EventType = KEY_EVENT;
until ir.Event.KeyEvent.bKeyDown;
ConRead := ir.Event.KeyEvent.AsciiChar;
end;

var
s: string;

begin
if allocconsole() then begin
foo := nil;
h := CreateConsoleScreenBuffer(GENERIC_READ or GENERIC_WRITE,
0, foo^, CONSOLE_TEXTMODE_BUFFER, nil);
if h <> INVALID_HANDLE_VALUE then begin
SetConsoleActiveScreenBuffer(h);
Std_In := GetStdHandle(STD_INPUT_HANDLE);
ConWrite('Some Text.'#13#10);

repeat
s := ConRead;
ConWrite(s);
until s = #13;
end;
freeconsole();
end;
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Денис

Репутация: -  0  +


Спасибо.

2Bokul: по ходу, дело не в модулях
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.10.2020 3:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name