Первая (и последняя) программа для Windows
Moderator: Little Muk
Первая (и последняя) программа для Windows
Для Windows существуют миллионы программ, но нет одной, которую я ищу уже долго и которую, видимо, придётся написать самому. Программа эта - простой калькулятор с RPN. Не онлайн (!), не Ява в браузере (!) и вообще безо всякого браузера и HTML, не программа в ABAP4, а нормальный 64-битный (!) Windows PE файл.
Задумка такая. В неизменном по размеру окне нет никаких кнопок, как в обычных калькуляторах, потому что ввод осуществляется только с клавиатуры. Есть несколько строчек, отображающих содержимое соответствующего количества первых регистров сопроцессора или SSE. Верхней строчке соответствует верхний регистр. Туда же производится ввод чисел.
Допустимые клавиши и их действия:
0-9, а также максимально одна запятая - отображение набранного символа в верхней строчке со сдвигом воображаемого "курсора";
Backspace - стирание последнего символа в строке, если там вообще есть символы;
Enter - считывание набранного числа и запись его в верхний регистр с одновременным сдвигом всего стека вниз с последующим обновлением отображения списка регистров;
+-/* - считывание набранного числа и выполнение арифметической операции между двумя верхними регистрами с последующим обновлением отображения списка регистров;
Esc - принудительное обновление отображения списка регистров, набранные символы в верхней строчке, естественно, пропадают.
Это весь калькулятор. Для удобства чтения верхняя строчка выводится на белом фоне, остальные - на сером.
Вопрос: какие функции API для этого понадобятся? Список длинный, а мне почти 50 лет, учиться на программиста, чтобы написать одну-единственную программу, влом. Нужно считывать допустимые символы с клавиатуры, выводить их на экран, а также выводить на экран содержимое регистров. Больше, вроде бы, ничего.
Задумка такая. В неизменном по размеру окне нет никаких кнопок, как в обычных калькуляторах, потому что ввод осуществляется только с клавиатуры. Есть несколько строчек, отображающих содержимое соответствующего количества первых регистров сопроцессора или SSE. Верхней строчке соответствует верхний регистр. Туда же производится ввод чисел.
Допустимые клавиши и их действия:
0-9, а также максимально одна запятая - отображение набранного символа в верхней строчке со сдвигом воображаемого "курсора";
Backspace - стирание последнего символа в строке, если там вообще есть символы;
Enter - считывание набранного числа и запись его в верхний регистр с одновременным сдвигом всего стека вниз с последующим обновлением отображения списка регистров;
+-/* - считывание набранного числа и выполнение арифметической операции между двумя верхними регистрами с последующим обновлением отображения списка регистров;
Esc - принудительное обновление отображения списка регистров, набранные символы в верхней строчке, естественно, пропадают.
Это весь калькулятор. Для удобства чтения верхняя строчка выводится на белом фоне, остальные - на сером.
Вопрос: какие функции API для этого понадобятся? Список длинный, а мне почти 50 лет, учиться на программиста, чтобы написать одну-единственную программу, влом. Нужно считывать допустимые символы с клавиатуры, выводить их на экран, а также выводить на экран содержимое регистров. Больше, вроде бы, ничего.
Re: Первая (и последняя) программа для Windows
RPN - RPN ist die Abkürzung für: Reverse Polish Notation ?
Если народ, который 20 лет назад мечтал о свободе, сегодня выбирает рабство...
https://novayagazeta.ru/articles/2013/0 ... volyutsiya
Россия как "Скотный двор"
еврей Михаил Веллер - Великий последний шанс
https://novayagazeta.ru/articles/2013/0 ... volyutsiya
Россия как "Скотный двор"
еврей Михаил Веллер - Великий последний шанс
Re: Первая (и последняя) программа для Windows
Да, конечно. Забыл подробно написать, сорри.anonim587 wrote:RPN - RPN ist die Abkürzung für: Reverse Polish Notation ?
Re: Первая (и последняя) программа для Windows
Free 15C RPN Scientific Calculator
http://hp15c.com/
Windows zip file of executables only (no installer) (6 MB)
Или тебе еще и исходники нужны? Считай что кнопочки это просто картинка да будет тебе счастье.
http://hp15c.com/
Windows zip file of executables only (no installer) (6 MB)
Или тебе еще и исходники нужны? Считай что кнопочки это просто картинка да будет тебе счастье.
Если народ, который 20 лет назад мечтал о свободе, сегодня выбирает рабство...
https://novayagazeta.ru/articles/2013/0 ... volyutsiya
Россия как "Скотный двор"
еврей Михаил Веллер - Великий последний шанс
https://novayagazeta.ru/articles/2013/0 ... volyutsiya
Россия как "Скотный двор"
еврей Михаил Веллер - Великий последний шанс
Re: Первая (и последняя) программа для Windows
А почему компилятор ругается вот здесь?
Говорит, "Ungültige Konvertierung von der Zeichenfolge in Typ Double." В текстовом поле задаётся обыкновенное число вроде 45 или 12,34. Почему он конвертировать-то не может?
Code: Select all
Dim Value1 As Double
Dim Value2 As Double
...
Select Case e.KeyChar
Case vbCr
Value2 = TextBox1.Text : TextBox1.Text = ""
Case "+"
Value1 = TextBox1.Text : Value1 = Value2 + Value1 : TextBox1.Text = Value1 : e.Handled = True
- швейцар001
- Posts: 7958
- Joined: 07 Jul 2013, 21:31
Re: Первая (и последняя) программа для Windows
Ура, заработало! Спасибо.швейцар001 wrote:try 12.34
Теперь такой вопрос. Вот сам код калькулятора.
Code: Select all
Public Class Form1
Public Value1 As Double
Public Value2 As Double
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not Char.IsDigit(e.KeyChar) And (e.KeyChar <> "," Or InStr(TextBox1.Text, ",") <> 0) And e.KeyChar <> vbBack And e.KeyChar <> vbCr And e.KeyChar <> "/" And e.KeyChar <> "+" And e.KeyChar <> "*" And e.KeyChar <> "-" Then e.Handled = True
Select Case e.KeyChar
Case vbCr
TextBox1.Text = Val(Replace(CStr(TextBox1.Text), ",", ".")) : Value2 = TextBox1.Text : TextBox2.Text = Value2 : TextBox1.Text = ""
Case "+"
TextBox1.Text = Val(Replace(CStr(TextBox1.Text), ",", ".")) : Value1 = TextBox1.Text : Value1 = Value2 + Value1 : Value2 = Value1 : TextBox1.Text = "" : TextBox2.Text = Value2 : e.Handled = True
Case "-"
TextBox1.Text = Val(Replace(CStr(TextBox1.Text), ",", ".")) : Value1 = TextBox1.Text : Value1 = Value2 - Value1 : Value2 = Value1 : TextBox1.Text = "" : TextBox2.Text = Value2 : e.Handled = True
Case "*"
TextBox1.Text = Val(Replace(CStr(TextBox1.Text), ",", ".")) : Value1 = TextBox1.Text : Value1 = Value2 * Value1 : Value2 = Value1 : TextBox1.Text = "" : TextBox2.Text = Value2 : e.Handled = True
Case "/"
TextBox1.Text = Val(Replace(CStr(TextBox1.Text), ",", ".")) : Value1 = TextBox1.Text : Value1 = Value2 / Value1 : Value2 = Value1 : TextBox1.Text = "" : TextBox2.Text = Value2 : e.Handled = True
End Select
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
End Class
Code: Select all
If Not Char.IsDigit(e.KeyChar) And (e.KeyChar <> "," Or InStr(TextBox1.Text, ",") <> 0) And e.KeyChar <> vbBack And e.KeyChar <> vbCr And e.KeyChar <> "/" And e.KeyChar <> "+" And e.KeyChar <> "*" And e.KeyChar <> "-" Then e.Handled = True
Re: Первая (и последняя) программа для Windows
Может так?
Code: Select all
Dim s() As Char = {",", "/", "*", "+", "-", vbBack, vbCr}
If s.Contains(E.KeyChar) OrElse Char.IsDigit(e.KeyChar) Then
End If
- швейцар001
- Posts: 7958
- Joined: 07 Jul 2013, 21:31
Re: Первая (и последняя) программа для Windows
если чего-то сложное надо, то пользуйся регексом, он в .нете ничем не отличается от версии перла (http://www.dotnetperls.com/regex-match-vbnet), если лень копаться с заумныими вещами, то я бы оставил как есть, если оно работает
Re: Первая (и последняя) программа для Windows
"Вот оно чо, Михалыч!" Огромное спасибо!
Видимо, придётся ещё какую-нибудь программу слепить, потому что .NET-компилятор вместе c IDE занял на диске полтора десятка гигабайт! Столько всякой фигни установилось, которую я и не просил. Какие то tools, SDK... Это ж в жисть никогда не удалится по собственной воле, только вместе со всей виндой. Жалко, если пропадать будет.
Видимо, придётся ещё какую-нибудь программу слепить, потому что .NET-компилятор вместе c IDE занял на диске полтора десятка гигабайт! Столько всякой фигни установилось, которую я и не просил. Какие то tools, SDK... Это ж в жисть никогда не удалится по собственной воле, только вместе со всей виндой. Жалко, если пропадать будет.