download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Форматиране на textbox...

Автор
Съобщение
power_m
Пет, 25.02.11, 19:23
Здравейте !
Искам да попитам как да форматирам определен текстбокс, така че, като въвеждам в него десетично число например 2,20 лв и в друг текстбокс въведа цяло число , като сумирам въведените числа да не генерира грешка .... Благодаря!
phrozencrew
Пет, 25.02.11, 19:34
Пробвай с точка, а не с запетайка.
power_m
Пет, 25.02.11, 20:49

RE: Форматиране на textbox...

” Пробвай с точка, а не с запетайка. „

Пробвах, не става !

power_m
Пет, 25.02.11, 22:18

RE: RE: Форматиране на textbox...

” Предполагам, че искаш нещо такова:

Ето сорса със коментари :
Private Sub TextBox1_Change()
Sabirane
End Sub
 
Private Sub TextBox2_Change()
Sabirane
End Sub
 
Sub Sabirane()
'Проверяваме да ли се използва запетая или точка, за да представим така и крайният резултат
 
If InStr(1, TextBox1.Text, ",") > 0 Or InStr(1, TextBox2.Text, ",") > 0 Then FlagZapetaika = 1 Else FlagZapetaika = 0
 
'Заместваме запетая с точка (ако има такава) и извличаме само числото с функцията Val
 
ParvoChislo = Val(Replace(TextBox1.Text, ",", "."))
VtoroChislo = Val(Replace(TextBox2.Text, ",", "."))
 
'Събираме двете числа и добавяме формата за "лв"
 
Label3.Caption = ParvoChislo + VtoroChislo & " лв"
 
'Заместваме точката със запетайка, ако е била използвана запетайка
 
If FlagZapetaika = 1 Then Label3.Caption = Replace(Label3.Caption, ".", ",")
End Sub

Ето и работещо примерче:
Primer.xls

Сърдечно благодаря DREVEN !!!

phrozencrew
Пет, 25.02.11, 22:20

RE: RE: Форматиране на textbox...

” Пробвах, не става ! „
За JavaScript ли става въпрос или за VBA?

PS: Разбрах

редактиран от phrozencrew на 25.02.11 22:21
phrozencrew
Пет, 25.02.11, 22:36

RE: RE: RE: RE: Форматиране на textbox...

” Не съм 100 % сигурен, но мисля,че на всички езици математическите операции са с точка. „
Именно! А той е пробвал и не е станало с точката, което е странното. Но не разбрах за собствена програма ли става въпрос или за някаква страница, щото нали раздела е "Програмиране и web-дизайн".
anonymous
Съб, 26.02.11, 03:40

RE: RE: RE: RE: Форматиране на textbox...

” Не съм 100 % сигурен, но мисля,че на всички езици математическите операции са с точка. „

С право не си на 100% сигурен. От регионалните настройки (без значение на операционната система) може да си настроиш разделителя (и не само) за дробно число да е ако искаш '@'(или почти каквото искаш да е). Интерпретаторите на различните програмни езици и скриптови такива се съобразяват с твоите настройки за региона :)

редактиран от anonymous на 26.02.11 03:50
редактиран от anonymous на 26.02.11 04:02
anonymous
Съб, 26.02.11, 09:27
Става въпрос при въвеждане в текстбокс, а не в сорса. В сорса при теб ако евентуално успееш да го сложиш там ще се интерпретира като точка, но друг, с други регионални натройки ще гръмне.
anonymous
Съб, 26.02.11, 18:51

RE: RE: Форматиране на textbox...

” Е нали точно за това идеше реч. Математическите операции компютъра ги извършва в резултат на формулите надробени в сорса. В текстовите полета ти дори можеш да пишеш цифрите с думи, но после трябва да сложиш такъв сорс, който да докара нещата до число и ако то е десетично то разделителят трябва да бъде точка. Иначе няма да се получи математика.

А регионалните настройки променят само визуализацията ( изгледа). Можеш да си сигурен, че докарал ли си нещата до цифри с разделител точка, компютърът ще извърши математическите операции независимо от регионалните ти настройки, а след това ще ти визуализира нещата според регионалните настройки. „

Тука си прав. Но в нашите отговори се водим по въпроса на този, който е отворил темата. Човека казва, че като ползва за разделител точка или запетая при въвеждане на дробно число в textbox и последващ опит да събере това число с друго програмата му "гърми".
Сега да го представим по- нагледно това:
Потребител въвежда в textbox -a числото 2.3, което се присвоява на променливата 'а'. В програмата му на променливата 'б' е присвоено числото 3.2. Разбира се променливата 'с' съдържа сбора от променливите 'а' и 'б'. Тоест: с=а+б
Тоест: с=2.3+3.2
Очаква се 'с' да има стойност 5.5

Едно малко отклонение: На всички ни е ясно като програмисти, че разделителя на дробните числа е точка. Да не изпадам в подробности накратко се използва американската система за изобразяване на числа. Това, че в някои програми, полета за въвеждане или каквото там може да въвеждаш дробно число с разделител различно от точка си е функция/екстра на програмата. Когато дадена програма няма това свойство то се поема от системата(онея регионални настройки).

Така. До дука какво имаме? Имаме: 1. В кода всички твърди числа (тези които не се въвеждат от потребителя) трябва да са с десетичен разделител точка (иначе програмата ще си 'гърми'). 2. В регионалните настройки на машината на потребителя за такъв разделител може да има почти всичко(както казахме дори и '@'). 3. Каквото и да има в регионалните настройки на потребителя нас не ни притеснява, понеже системата ще го подаде към програмата като точка (имам предвид разделителя за дробни числа)

И така. Какво ди направил ти? Събрал си две дробни числа. Извеждаш сбора от тях. В регионалните ти е дадено разделителя да е '@'. Сбора ти е 5@3
До тука няма грешка. Сега преработи програмата си променливата ти 'а' да иска въвеждане от потребителя на дробно число. Събери го (програмата го събира) с друго дробно число и си изведи сбора. И ако си оставил за разделител символа '@' в регионалните си докато не въведеш числото с този разделител програмата ще ти гърми.
а = /* присвоява стойността въведена от потребителя в текстбокса */
б = а+3.2
извеждаме б
ако а е 2.3 то резултата ще е 5.5

Това няма да гърми, ако потребителя е въвел 2@3

Още едно малко отклонение:
Няма нужда да се опитваш в кода си да слагаш различен разделител от точката. Ако толкова искаш в сурса ти '@' да играе за разделител най лесно е да си дефинираш това. Предполагам, че не искаш това, а просто в опита си да разбереш подмяната на разделител ти е хрумнало.

И така. За да обърна внимание на регионалните настройки в предния си постинг е било понеже на отворилия темата кода му е верен, но явно системата не попада на точния формат, който и трябва за да работи (както каза човека ни точка, ни запетая).

П.С.:
Това горното, сега ми хрумна, можеше да го обясня и като ви разкажа една история.
Едно време в университета учехме информатика. Информатиката представляваше да може да работим с разни програми. Една от програмите бе и Ексел. Та на изпитите много често асистентите променяха някои неща от регионалните настройки. Една от тези промени бе и именно този разделител за дробни числа и така когато имахме формула от от рода на
=sum(A1,B1)

И в клетките A1 и B1 се съдържаха дробни числа (примерно оборота на някой магазин) формулата си гърмеше със съобщение за грешка.

редактиран от anonymous на 26.02.11 19:01
редактиран от anonymous на 26.02.11 19:03
редактиран от anonymous на 26.02.11 19:05
phrozencrew
Съб, 26.02.11, 19:38
Съгласявам се напълно с lotsofsex. В Inputbox-a каквото и да навреш ще работи, стига да е по регионалните настройки.
За това и би било интересно каква точно грешка се е случила с кода на power_m, която е останала като грешка и след заменянето на запетайката с точка?

ПС: Тая тема е изключително проблематична при Window$ машините, инсталирани на лаптопи, които нямат NumLock!!!! Просто е някакъв ад!

power_m
Вто, 01.03.11, 19:03

RE: RE: Форматиране на textbox...

Здрвейте !
Любопитно ми е по какъв начин да присвоя стойност в която да се съхраняват и сумират въведените стойности в " parvochislo", защо поставям този проблем ... ? Защото аз съзададох такава променлива в която се съхраняват въведените стойности .... но, всеки път когато въвеждам новата стойност в "parvochislo" променливата приема същата стойност а не се сумират, примерно :

Dim a as Integer
dim n as integer
a=parvochislo -> 7 (5)
n= a +a ->7 (5
suma = n ->7 (12)
....

phrozencrew
Вто, 01.03.11, 20:56

RE: RE: Форматиране на textbox...

” Какво точно имаш предвид, за лаптопите? „
Липсата на NumLock клавиатура ли?! Пробвай да въведеш в неформатирана клетка десетично число. Естествено ще използваш запетайката от стандартната клавиатура, ако регионалните настройки са ти такива, че запетайката е десетичен знак. Excel-а ще може да обработи математически това поле. Но го приема за текстово!!! И не дай си Боже да пренесеш файла на друг комп, който е с друга регионална настройка с точка за десетичен разделител . Получава се такова мазало, че не е истина! Полетата си седят текстови и не можеш да правиш никакви аритметични операции с тях.
Едва ли производителите на лаптопи ще бъдат задължени да вкарват NumLock клавиатури, но тая безсмислица беше редно да е оправена отдавна. Все пак хората с лаптопи също правят бизнес!

Още един много досаден и мегагаден бъг съм забелязал в Excel, който продължава да виси със страшна сила. Ако инсталираш офиса на друг език, примерно немски. И решеш там да използваш вградените допълнителни функции, като конвертиране на десетични числа в бинарни - функцията е "=Dez2Bin" (абсолютно примерно). И ако отвориш тоя файл на комп, при който офиса е на английски, тогава функцията не се конвертира до Dec2Bin, ами си седи с "z". С доста функции е така. Отвратително е!

Чудя се защо М$ съсипват по тоя грозен начин една от най-добрите си програми Excel!!! Тъпо, та чак вдлъбнато! И е така от години!

phrozencrew
Вто, 01.03.11, 22:44

RE: Форматиране на textbox...

” По отношение на десетична запетая или точка, Майкрософт са се погрижили да може да се сменят бе да се пипат регионалните настройки на компютъра. С други думи потребителят може да избере сам дали да ползва регионалните настройки или не. Промяната се извършва с слагане или махане на една клявка в Tools=>Option=>International

За по нагледно:

Утре ще го пробвам това, но дълбоко се съмнявам, че ще ми поправи документите, създавани на лаптоп. Работя с документи с 4 различни регионални настройки от различните офиси на фирмата - немски, австрийски, малайзиски и китайски.
Определено ще е много трудно да се накарат хилядите служители, да си форматират като числови клетките, с които извършват математически операции, а още по-малко да си променят настройките на Excel-a. Много по-лесно би било М$ да си оправят офиса с един ъпдейт.

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.