purebasic.info

PureBasic forum
Текущее время: Пт авг 17, 2018 3:32 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Сб дек 22, 2012 1:07 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пт ноя 20, 2009 1:25 pm
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Сейчас я немного экспериментирую на Пурике в консольном режиме.

Помню, когда много лет назад учился в ВУЗе программировал под MS DOS на Turbo Pascal, MASM, и каком-то ROM BASIC.

Тогда я исследовал разные возможности работы в текстовом режиме (вывод стандартными средствами, вывод по прерыванию DOS, вывод по прерыванию BIOS и конечно напрямую в видеопамять).

В целом получалось забавно. Выходило что-то вроде Windows, но в текстовом режиме.

Сейчас, решил вспомнить молодость и поковыряться в текстовом режиме (в консоли).

Сразу столкнулся с кучей проблем.

Если использовать OpenConsole() и включить EnableGraphicalConsole(1)
то появляется возможность использовать дополнительные функции таких как:
ClearConsole(), ConsoleLocate(x, y), ConsoleColor(), ConsoleCursor()

Кроме того для ввода-вывода в консоли используются всего 3 функции:
Print(), PrintN(), Input()

Собственно вопросы состоят вот в чём:

Возможно ли вообще стандартными средствами выполнять следующие действия:

1) Получить размер консоли в символах (по идее он может завесить как от настроек окна консоли так и от используемого текстового режима, которых было несколько. Самые распространённые это 80x25 и 80x50 ну и ещё другие 40x25, 80x40, 80x43 и вроде 160x50 были, хотя я ими не пользовался).


2) Определить текущую позицию текстового курсора !!!
В Turbo Pascal для этого использовались функции модуля Crt которые назывались WhereX и WhereY.
Кажется, эти же данные можно было получить и через прерывания DOS/BIOS. Сейчас я точно уже не помню как, да и под Windows и Linux эти прерывания фунциклировать уже не будут. :(

3) Выводить символы без перемещения курсора.
Как ни странно, этой возможности штатно не было даже в Turbo Pascal. Проблема возникает тогда, когда нужно вывести символ в правый нижний угол консоли (или текстового окна, отрисованного в текстовом режиме с помощью паскалевской функции Window из модуля Crt).

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

Причём точно так же работали и прерывания DOS и прерывания BIOS.

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

К СЧАСТЬЮ в PureBASIC процедура Print() не переводит курсор на новую строку, даже, когда упирается в правый край экрана.
При условии что включен режим EnableGraphicalConsole(1).
(И это меня приятно удивило)

И что совершенно логично, при выключенном EnableGraphicalConsole(0) процедура Print() автоматически переводит текст на новую строку.

То как PureBASIC отрабатывает эту процедуру в разных режимах меня устраивает.
Интересно работает ли это также и под Linux?

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

Конечно можно попытаться программно рассчитывать положение курсора анализируя длину выводимых (и вводимых пользователем) строк. но это какое-то извращение получится, на которое, к тому же будут тратиться вычислительные ресурсы.


4) Можно ли в строке передаваемой процедуре Print() задавать какие-то эскейп-последовательности?

Например что-то вроде \n.

Или для того чтобы включить команду перевода строки в строку можно использовать только конструкции вроде:
Код:
1
2
Print("Это первая строка"+Chr(13)+Chr(10)+"А это вторая строка");
 


Это конечно работает, но как-то длинно получается.

Хотя, сейчас подумалось, что можно задать символьную константу:

Код:
1
2
3
4
5
#N = Chr(13)+Chr(10)
 
Print("Это первая строка"+#N+"А это вторая строка");
 
 

Попробовал, получилось. ;)

Но вставка управляющих символов работает только в режиме EnableGraphicalConsole(0).

В режиме со включенным EnableGraphicalConsole(1), как я понял перевод строки можно сделать только двумя способами:
Либо явно с помощью ConsoleLocate()
Либо используя PrintN("") Причём именно в таком написании с кавычками и пустой строкой, т.к. PrintN() компилятор не поймёт.

5) Как настроить кодировку вывода текста в консоль?
И как это сделать, чтобы русский текст используемый в консольной программе адекватно отображался в разных системах (win, linux, mac)?

6) Медленный вывод текста в консоль.
В общем, то и при работе на Pascal, MASM и ROM BASIC с использованием прерываний DOS/BIOS меня не устраивала скорость вывода данных. Именно из-за скорости я и использовал прямой вывод в видеопамять (хотя у этого метода тоже были недостатки, т.к. на разных компьютерах под видеопамять отводились разные адресные пространства).

В PureBASIC медленность вывода в консоли штатными средствами удручает :(

Например:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
OpenConsole()
 EnableGraphicalConsole(1)
 For j = 0 To 24
  ConsoleLocate(0,j)
  For i=1 To 80
   Print("*")
  Next i
 Next j
 For j = 1 To 23
  ConsoleLocate(1,j)
  For i=1 To 78
   Print("#")
  Next i
 Next j
 


Понятно, что это не самый рациональный способ заполнения экрана, но зато наглядно.

7) Отсутствует возможность создания текстовых окон (как в Turbo Pascal).

Важной качеством текстовых окон было то, что при создании окна стандартный вывод осуществлялся именно в этом окне.

Применительно к PureBASIC это могло бы выглядеть так:

* Включаем режим EnableGraphicalConsole(1);
* Выводим на экран рамку;
* Устанавливаем координаты начала следующего вывода;
* Переключаемся в режим EnableGraphicalConsole(0);
* Выводим текст с использованием управляющих символов и всяких ReadConsoleData() и WriteConsoleData()
(которые работают только при отключенном EnableGraphicalConsole(0) но могут быть весьма и весьма полезными)

При этом, если бы мы могли перенаправить стандартный вывод в текстовое окно, то при переводе каретки следующая строка начиналась бы не от левого края экрана, а от левого края текстового окна.

Пример:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
; Программа для тестирования консольных режимов
 
#N = Chr(13)+Chr(10) ; Константа содержащая символы перехода на новую строку
 
OpenConsole()
EnableGraphicalConsole(1) ; Включаем графическую консоль, для управления выводом
 
For j = 0 To 24     ; Медленно и печально в цикле заполняем экран звёздочками
ConsoleLocate(0,j)
For i=1 To 80
Print("*")
Next i
Next j
 
For j = 3 To 21     ; Освобождаем в центре место для вывода текста в цикле забивая его пробелами
ConsoleLocate(3,j)
For i=3 To 76
Print(" ")
Next i
Next j
 
ConsoleLocate(4,4)   ; Устанавливаем курсор в координаты начала будущего вывода
 
EnableGraphicalConsole(0) ; Отключаем графическую консоль, для вывода потокового текста
 
Print("Это первая строка"+#N+"Это вторая строка"+#N+"А это третья") ; Выводим 3 строки текста
 
; При этом первая строка начнёт выводиться с позиции курсора
; А вторая и третьи строки будут выводиться от левого края экрана
 
 
Input() ;  Для задержки
 
 



PS: Извините, что "много букав", пишу редко, сейчас просто вопросы накопились. :)

PPS: Пользуюсь PureBasic 5.00 (Windows - x86) Demo


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 22, 2012 1:37 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6354
Благодарил (а): 20 раз.
Поблагодарили: 194 раз.
Пункты репутации: 48
Лично для меня ценность консоли исключительно в возможности перенаправления ввода-вывода. Всё остальное на современном этапе красивостей ОС выглядит архоично и не имеет значения.
В плане "вспомнить молодость" допускаю, но практической ценности не вижу. Какой смысл отказываться от винды, если всё равно это работает в Винде (тут я имею в виду и Убунту какую нибудь) ?
Другой вопрос программа реального времени под DOS и т.п. Но Пурик это не осилит к сожалению, в отличии от того же FreeBasic.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 22, 2012 2:12 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пт ноя 20, 2009 1:25 pm
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Ну, ответить на вопрос "Зачем" я могу по разному.

Во-первых, потому что я извращенец и люблю текстовые режимы :)
Я считаю, что текстовой режим незаслуженно забыт, хотя он может быть весьма функциональным и лёгким в использовании.
В том же Linux я люблю поковыряться в текстовом режиме в консоли.

А ещё я недавно начитался Джефа Раскина (Автора первого Mac и Canon Cat), который ратовал за текстовые интерфейсы.

Но это всё лирика.

Во-вторых, консольный режим легче для понимания при начале изучения программирования. А я подбираю средства для обучения программированию школьников.

Конечно, если основная задача программирования заключается только в каких-то вычислениях, то их можно легко выводить в ту же консоль штатными средствами и не заморачиваться.

Но хочется сделать что-то интересное. (Поэтому см. следующий пункт.)

В-третьих, у меня давно была идея сделать игрушку в текстовом режиме. Пусть простенькую, но играбельную.

Мне кажется, что подобная задача могла бы заинтересовать учеников и мотивировать их на освоение различных вычислительных алгоритмов.

Одно дело когда ты просто сортируешь массивы или проводишь какие-то подобные абстрактные манипуляции, а другое дело, если от этого зависит какой-то отображаемый на экране игровой контент.

Как я уже сказал, в полноэкранном текстовом режиме я могу работать под Линуксом (в Win 7 увы этого нет). Поэтому меня волнует также и переносимость кода.

Я предполагаю, что существуют какие-нибудь WinAPI которые можно вызывать из Пурика или через вставки Ассемблеровского кода, но они не будут работать в Linux.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 22, 2012 4:18 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6354
Благодарил (а): 20 раз.
Поблагодарили: 194 раз.
Пункты репутации: 48
Hemulo писал(а):
А я подбираю средства для обучения программированию школьников.

Пощадите детей!
Кому сейчас интересны игры, где буква стреляет в другую букву знаком препинания?
Лично меня, старого дядьку , раздражает, что большинство книжек по с++ или С# начинаются с работы в консоли. 80% материала дается именно так - все основные языковые конструкции. Потом пару строк про то, что в Винде есть окана. И всё.
И я всегда думаю, а почему бы не наоборот, научить работать с окнами, а про консоль, как вымирающий вид, сказать пару слов?

По существу вопросов ответить нечего. Наверняка ты и сам проштудировал справку - что нового можно там увидеть? Игры консольные встречал в конкурсе буржуев PurePunch. Что то типа этого
Код:
1
2
3
4
5
6
7
8
9
10
Macro c(a,b):ConsoleLocate(a,b):EndMacro:*z=AllocateMemory(1920):OpenConsole()
w=v:n.s="   ":EnableGraphicalConsole(1):a.s=" "+Chr(200)+Chr(205)+Chr(206)
For i=12 To 28:For j=23 To Random(5)+14 Step -1:PokeC(*z+i+j*40,1):c(i,j)
Print(Chr(178)):Next j:Next i:For y=0 To 23:For x=0 To 38:c(x,y):Print(a)
If x<37:If Inkey()<>"" And v=0:u=x+1:v=y+1:EndIf:EndIf:If PeekC(*z+x+4+y*40)
s=40*y+x:For i=y To 22:c(x+1,i):Print(n):c(x+1,i+1):Print(Right(a,3))
Delay(99):Next i:c(3,0):Print("SCORE : "+Str(s)):Input():End:EndIf:If v<>0
If v>23:v=0:EndIf:PokeC(*z+u+w*40,0):c(u,v-1):Print(" "):w=v:If v:c(u,v)
Print("*"):v=v+1:EndIf:EndIf:Delay(50):Next x:c(39,y):Print(n):Next y
c(3,0):Print("**MISSION COMPLETED !**"):Input():End



И ещё арканоид
Код:
1
2
3
4
5
6
7
8
9
10
Macro P(a,b):ConsoleLocate(a,b):EndMacro:OpenConsole():EnableGraphicalConsole(1)
For y=0 To 5:P(10,y*2):Print(LSet("=",60,"=")):Next:px=20:X=px:Y=23
Dx=1:Dy=-1:Macro ENDE():P(30,11):Print(" GAME OVER "):Input():CloseConsole()
End:EndMacro:Repeat:P(0,0):Print("POINTS:"+Str(PT)):Inkey():k=RawKey()
If k=37 And Px>0:Px-1:EndIf:If k=39 And Px<72:Px+1:EndIf:P(Px,24)
Print(" ------ "):If m>400:P(X,Y):Print(" "):X+Dx:Y+Dy:m=0:EndIf:m+1
PokeW(@coord.l,X):PokeW(@coord+2,Y):NCR.l:B$=" "
ReadConsoleOutputCharacter_(7,B$,1,coord,@NCR):If B$="=":Dy*-1:P(X,Y):Print(" ")
PT+1:EndIf:If B$="-" And Dy=1 :Dy=-1:EndIf:If X>78 Or X<1
Dx*-1:EndIf:If X<1:Dx=1:EndIf:If Y>24:ENDE():EndIf:P(X,Y):Print("o"):Until k=27



Ну и ещё с десяток различных трюков в таком стиле можно найти у них на сайте.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 22, 2012 4:24 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11227
Благодарил (а): 4 раз.
Поблагодарили: 425 раз.
kvitaliy писал(а):
И ещё арканоид
В ней баг. Загони шарик в верхний правый угол и увидишь.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 22, 2012 4:52 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6354
Благодарил (а): 20 раз.
Поблагодарили: 194 раз.
Пункты репутации: 48
Пётр писал(а):
В ней баг

Это к автору претензии :D
тут наверно главное принцип, а не играбильность. Тем более, что у меня очень быстро, я не успеваю несколько раз отбить, а ты хочешь, что бы я до верхнего угла дошел!

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 23, 2012 2:33 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11227
Благодарил (а): 4 раз.
Поблагодарили: 425 раз.
Hemulo писал(а):
как это сделать, чтобы русский текст используемый в консольной программе адекватно отображался в разных системах (win, linux, mac)
Попробуй создавать юникодную прогу. В винде, в консоли корректно отображается кириллица. В линукс и макоси не пробвал.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 23, 2012 3:14 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6354
Благодарил (а): 20 раз.
Поблагодарили: 194 раз.
Пункты репутации: 48
Пётр писал(а):
В линукс и макоси не пробвал.

Попробовал в лине Пурик v5.0 - нормально, если формат файла в utf8

А вот игрушки вышеописанные рисуются кракозяблами - видно кодировка (Chr(200)+Chr(205)+Chr(206) ) в лине и винде отличается.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 23, 2012 5:58 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пт ноя 20, 2009 1:25 pm
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Hemulo писал(а):
как это сделать, чтобы русский текст используемый в консольной программе адекватно отображался в разных системах (win, linux, mac)
Попробуй создавать юникодную прогу. В винде, в консоли корректно отображается кириллица. В линукс и макоси не пробвал.


Хм...
На работе, где я писал эту прогу, даже при включённом юникоде и консольном режиме заданном в компиляторе русского языка не было.

Дома повторил то же самое, русский язык в консоли нормально отобразился.

И там и там стоит Win7.
На работе стоит PureBASIC 5.00 Demo
Дома PureBASIC 5.00 Полная версия.
На работе редактор не руссифицирован, дома руссифицирован.

Не знаю как эти факторы могут повлиять, вроде не должны.
Проверю в понедельник снова.

Кстати, нет ли способа переключать кодировку консоли из программы?
Это вроде WinAPI-шная штука.
Видел когда-то такой пример для программирования на Си.

PS: Перечитываю сейчас книжку по Sinclair BASIC, вспоминаю детство, и поражаюсь, насколько при таких ограничениях железа был крут этот язык.

Многих прикольных вещей из этого бейсика мне сейчас не хватает.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 23, 2012 6:16 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пт ноя 20, 2009 1:25 pm
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
А вот игрушки вышеописанные рисуются кракозяблами - видно кодировка (Chr(200)+Chr(205)+Chr(206) ) в лине и винде отличается.

Надо, видимо, заменить эти символы на юникодовские:

Chr($255A)+Chr($2550)+Chr($256C) ╚═╬

И ещё нужно будет заменить
Chr(178)
На
Chr($2588)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 23, 2012 7:05 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пт ноя 20, 2009 1:25 pm
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Пощадите детей!
Кому сейчас интересны игры, где буква стреляет в другую букву знаком препинания?

Ну, я пока их консолью не пугаю.
Вот думаю, как бы подать консоль и работу с ней поинтересней.
Всяко не стреляющие буковки, это точно.

kvitaliy писал(а):
Лично меня, старого дядьку , раздражает, что большинство книжек по с++ или С# начинаются с работы в консоли. 80% материала дается именно так - все основные языковые конструкции. Потом пару строк про то, что в Винде есть окана. И всё.
И я всегда думаю, а почему бы не наоборот, научить работать с окнами, а про консоль, как вымирающий вид, сказать пару слов?


Меня, это тоже несколько смущает.

К тому же, работать с консолью в окошке, это немного извратно, т.к. штатные шрифты там мелкие и убогие (немного спасает Lucida Console но это всё равно настраивается руками).

С другой стороны, консоль - это стандартное устройство вывода и вывод на консоль подобна выводу в файл.

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

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

Я вот для повышения своих знаний просмотрел курс по программированию на Си от Баумановского центра "Специалист".

Курс классный, узнал много интересного, но до работы под Windows они так и не дошли. Типа это должно рассматриваться на следующих курсах уже на C++.

А я, например, не хочу заморачиваться с C++, а хочу узнать как это будет в чистом Си без ООП, но облом...

kvitaliy писал(а):
Игры консольные встречал в конкурсе буржуев PurePunch.

Ну и ещё с десяток различных трюков в таком стиле можно найти у них на сайте.


Спасибо, поковырялся, посмотрел эти примеры.
Можно ссылку на тех буржуев?

Я смотрю сейчас сайт http://www.purearea.net
Там есть несколько интересных примеров по работе с консолью (хотя не совсем о том, что мне нужно).


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 23, 2012 7:14 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пт ноя 20, 2009 1:25 pm
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Вот например интересный пример, но к сожалению старый и у меня не работает:
http://www.purearea.net/pb/CodeArchiv/I ... lscreen.pb

Но, это не работает, наверное из-за Win7.
Надо, наверное попробовать под WinXP...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 23, 2012 8:37 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пт ноя 20, 2009 1:25 pm
Сообщений: 46
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Вот, кажется нашёл что-то приблизительно похожее на то что мне нужно.
Библиотека Xtended-Console.pbi

http://www.purearea.net/pb/CodeArchiv/I ... onsole.pbi

И пример Xtended-Example.pb

http://www.purearea.net/pb/CodeArchiv/I ... Example.pb

Судя по объявлениям, там есть то что мне хотелось использовать:
Declare.w GetCursorY()
Declare.w GetCursorX()
И т.п.


У меня сначала не заработало, но я исправил пару ошибок на которые ругался пурик и вроде программа запустилась.

Мне пришлось исправить в файле Xtended-Console.pbi
следующие строки:
Код:
1
25 Structure INPUT_RECORD 



Ошибка: Строка 25: 'Structure', 'Interface' или 'Prototype' уже объявлены: INPUT_RECORD.

Ниже этот INPUT_RECORD используется ещё в строке
Код:
1
521 inputRecord.INPUT_RECORD



Я не понял где тут ошибка, но на всякий случай изменил в обоих строках "INPUT_RECORD" на "INPUT_RECORD_".
Помогло.

Дальше

Код:
1
263         hwnd.l = FindWindow_(#Null, title$)



Ошибка: Переменная уже объявлена с типом hwnd

В этой строке я заменил "hwnd.l" на "hwnd".

И после этого вроде всё заработало.


Понятно, что это чисто виндовский вариант, но всё же занятно.
С этой библиотекой я немного покопаюсь.
Может что-то подобное есть и под Linux?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 23, 2012 9:18 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6354
Благодарил (а): 20 раз.
Поблагодарили: 194 раз.
Пункты репутации: 48
Hemulo писал(а):
Вот например интересный пример

Я об этом писал тут
На 7-ке не работает.
Hemulo писал(а):
Можно ссылку на тех буржуев?

Поищи в поисковике именно на purebasic.fr/english по словам PurePunch
Примерно это, но там несколько сезонов и конечно не всё про консоль, но есть интересные решения, особенно именно для школьников.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 12:49 pm 
Не в сети
доцент

Зарегистрирован: Вс май 15, 2016 5:08 pm
Сообщений: 55
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Появилась похожая задача.

Нужно в консоль выводить лог скачивания файлов с текущим процентом закачанного. Что-то типа "some_file.ext 78%". Но поскольку лист скачанных файлов заполняется сверху вниз, нужно знать на какой строке в данный момент курсор, чтобы ее тупо переписывать поверх (ну или только ту часть строки. где отображаются проценты).

Штука нужна кроссплатформенная, поэтому WinAPI не подходит.

_________________
Чат по PureBasic в Telegram


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB