0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 16
1

Преобразование строки в число в приложении для Windows 8.1. TextBox. Platform::String ^

13.05.2015, 09:34. Показов 1452. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Не давно я решил перейти на программирование современных приложений под Windows 8.1. До этого хорошо создавал простые классические приложения.
Просмотрел урок по написанию "HelloWorld" от Microsoft. Из элемента TextBox берется имя и выводится строкой ниже. Всё просто.

Затем, я решил сделать лабораторную, простейший калькулятор с одной формулой и кнопкой. Но, из TextBox получаем строку типа Platform::String^. И как преобразовать Platform::String^ в другой числовой тип данных? StrToInt(), atoi() и тому подобные не работают.

XAML код главной страницы:
Кликните здесь для просмотра всего текста
XML
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<Page
    x:Class="Lab2.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Lab2"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
 
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <StackPanel Margin="30,33,30,27" Name="head">
            <TextBlock Text="Автоматизация информационных сетей" FontSize="42"></TextBlock>
            <TextBlock Text="Лабораторная работа №1" FontSize="36"></TextBlock>
            <TextBlock Text="Ильчук Дмитрий Сергеевич, группа 83001207" FontSize="26"></TextBlock>
            <StackPanel Margin="20" Orientation="Horizontal">
                <StackPanel Margin="0,0,700,0" Name="InputData">
                    <StackPanel Margin="10">
                        <TextBlock Text="Число одновременных пользователей" FontSize="20"></TextBlock>
                        <TextBox x:Name="numberUsers" Width="300" HorizontalAlignment="Left" Text="18" InputScope="Number"></TextBox>
                    </StackPanel>
                    <StackPanel Margin="10">
                        <TextBlock Text="Время опроса одного абонента, с" FontSize="20" SelectionChanged="TextBlock_SelectionChanged"></TextBlock>
                        <TextBox x:Name="responseTime" Width="300" HorizontalAlignment="Left" Text="1"></TextBox>
                    </StackPanel>
                    <StackPanel Margin="10">
                        <TextBlock Text="Пропускная способность информационной магистрали, бит/с" FontSize="20"></TextBlock>
                        <TextBox x:Name="throughput" Width="300" HorizontalAlignment="Left" Text="5600"></TextBox>
                    </StackPanel>
                    <StackPanel Margin="10">
                        <TextBlock Text="Длина кадра-запроса на обслуживание, бит" FontSize="20"/>
                        <TextBox x:Name="frameLengthQuery" Width="300" HorizontalAlignment="Left" Text="4096"/>
                    </StackPanel>
                    <StackPanel Margin="10">
                        <TextBlock Text="Время обработки запроса, с" FontSize="20"></TextBlock>
                        <TextBox x:Name="processingTime" Width="300" HorizontalAlignment="Left" Text="0.7"></TextBox>
                    </StackPanel>
                    <StackPanel Margin="10">
                        <TextBlock Text="Длина кадра с результатами, бит" FontSize="20"></TextBlock>
                        <TextBox x:Name="frameLength" Width="300" HorizontalAlignment="Left" Text="8192"></TextBox>
                    </StackPanel>
                    <Button Content="Рассчитать" Click="Button_Click"></Button>
                </StackPanel>
                <StackPanel Margin="0,0" x:Name="OutputData" HorizontalAlignment="Left" RenderTransformOrigin="0.5,0.5" Width="700">
                    <StackPanel.RenderTransform>
                        <CompositeTransform TranslateX="-669"/>
                    </StackPanel.RenderTransform>
                    <StackPanel Margin="10">
                        <TextBlock Text="Минимальное время реакции на запрос, с" FontSize="20"></TextBlock>
                        <TextBlock Name="minProcessingTime" FontSize="18"></TextBlock>
                    </StackPanel>
                    <StackPanel Margin="10">
                        <TextBlock Text="Максимальное время реакции на запрос, с" FontSize="20"></TextBlock>
                        <TextBlock Name="maxProcessingTime" FontSize="18"></TextBlock>
                    </StackPanel>
                </StackPanel>
            </StackPanel>
        </StackPanel>
    </Grid>
</Page>

C++ код главной страницы.
Кликните здесь для просмотра всего текста
C++
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
36
37
38
//
// MainPage.xaml.cpp
// Реализация класса MainPage.
//
 
#include "pch.h"
#include "MainPage.xaml.h"
#include <string>
#include <cstdlib>
 
using namespace Lab2;
 
using namespace Platform;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Controls::Primitives;
using namespace Windows::UI::Xaml::Data;
using namespace Windows::UI::Xaml::Input;
using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Navigation;
 
// Шаблон элемента пустой страницы задокументирован по адресу [url]http://go.microsoft.com/fwlink/?LinkId=234238[/url]
 
MainPage::MainPage()
{
    InitializeComponent();
}
 
void Lab2::MainPage::Button_Click (Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
    int M, Topr, Vnm, Ek1, Toz, Ek2, Trmax, Trmin;
    M = numberUsers->Text;//значение типа "Platform::String ^" нельзя присвоить сущности типа "int"
    M = StrToInt (numberUsers->Text);//здесь не находит идентификатор StrToInt
    M = atoi (numberUsers->Text);//арумент типа "Platform::String ^" не совместим с параметром типа "const char *"
 
}


Вывод компиилятора:
Кликните здесь для просмотра всего текста
1>------ Сборка начата: проект: Lab2.Windows, Конфигурация: Debug Win32 ------
1> MainPage.xaml.cpp
1>d:\giblarium\documents\visual studio 2013\projects\ais\lab2\lab2\lab2.windows\mainpage.xaml.cpp(47): error C2440: =: невозможно преобразовать "Platform::String ^" в "int"
1> Оператор определенного пользователем преобразования недоступен, или
1> Не существует контекста, в котором такое преобразование возможно
1>d:\giblarium\documents\visual studio 2013\projects\ais\lab2\lab2\lab2.windows\mainpage.xaml.cpp(48): error C3861: StrToInt: идентификатор не найден
1>d:\giblarium\documents\visual studio 2013\projects\ais\lab2\lab2\lab2.windows\mainpage.xaml.cpp(49): error C2664: "int atoi(const char *)": невозможно преобразовать аргумент 1 из "Platform::String ^" в "const char *"
1> Оператор определенного пользователем преобразования недоступен, или
1> Нельзя преобразовать тип WinRT в машинный тип
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
========== Развертывание: успешно: 0, с ошибками: 0, пропущено: 0 ==========


Если нужен весь проект, то я готов его выложить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2015, 09:34
Ответы с готовыми решениями:

Преобразование String-строки в число - Как?
Ну ка, люди, подскажите - как преобразовать string-строку(не char) в число?

TextBox. Преобразование типов из string в date и int
Нужно ввести в форме данные для добавления их в таблицу. Фото ошибки под спойлером namespace...

Преобразование строки в число для сравнения
Доброго всем времени суток, помогите пожалуйста с такой вот проблемкой. Вообщем имею задание...

Установка Haskell Platform для Windows 7
Всем привет! Помогите, пожалуйста. Сегодня утром _Ivana привёл интересное решение в теме...

4
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
13.05.2015, 10:11 2
Giblar, попробуйте сделать как здесь: http://blogs.msdn.com/b/devsch... -c-cx.aspx
0
176 / 144 / 70
Регистрация: 01.05.2012
Сообщений: 414
13.05.2015, 10:43 3
Giblar, а Int::Parse(str) не работает?

Добавлено через 29 минут
Да, не работает.
Не ожидал, что для С++ вообще так много урезали.
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
14.05.2015, 15:24 4
Не на чем проверить - а Convert::ToInt32() в наличии?
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 16
19.05.2015, 22:00  [ТС] 5
C++
1
    M = Convert::ToInt32 (numberUsers->Text);
Не находит пространство имен. Может какая библиотека нужна?

Ответ компилятора:
1>------ Сборка начата: проект: Lab2.Windows, Конфигурация: Debug Win32 ------
1> pch.cpp
1> App.xaml.cpp
1> MainPage.xaml.cpp
1> XamlTypeInfo.Impl.g.cpp
1>d:\giblarium\documents\visual studio 2013\projects\ais\lab2\lab2\lab2.windows\mainpage.xaml.cpp(47): error C2653: Convert: не является именем класса или пространства имен
1>d:\giblarium\documents\visual studio 2013\projects\ais\lab2\lab2\lab2.windows\mainpage.xaml.cpp(47): error C3861: ToInt32: идентификатор не найден
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
========== Развертывание: успешно: 0, с ошибками: 0, пропущено: 0 ==========
0
19.05.2015, 22:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2015, 22:00
Помогаю со студенческими работами здесь

Преобразование string в двоичное число
Здравствуйте! Такая проблема: На входе имеем строку, например 0001001 необходимо пребразовать её...

Преобразование string в шестнадцатеричное число
Есть string str = &quot;0xffffff&quot; Подскажите, пожалуйста, как преобразовать эту строку в int?

Преобразование русскоязычного числительного (string) в число (int)
Добрый день, коллеги. Возникла нетривиальная задача преобразования числительного, написанного...

Разбиение строки и преобразование string в int
Пользователь вводит цену товара таким образом: 20-55. Нужно разбить данную строку (она типа string...

Преобразование String строки с шестнадцатеричным числом в Integer
Есть строка: String str = &quot;0xff&quot;; ее необходимо преобразовать в int число. Есть ли легкие пути...

Преобразование string в int / вывод на экран число после операции на калькуляторе
Начал знакомиться с Windows Form. сложно описать кратко проблему, поэтому вот ситуация: Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru