@malchikmolodoy

Как правильно сохранить переменную после нажатия кнопки?

Всем привет!
Пишу небольшой интерфейс с логами под выдачу телефонов.
Выбираю модель телефона, далее ввожу imei, ФИО, жму "Записать" и в логи при этом пишется всё, кроме модели телефона. Во время нажатия клавиши переменная phone имеет значение, которое выбирается в Combobox, но после переменная сбрасывается. Как мне правильно написать так, чтобы переменная всегда сохранялась?
Вторая проблема: как делать сохранения файла по типу "Дата + ФИО + .log". Когда создаю переменную пути для логов, указываю так:
$txtfile = "C:\scripts\ps\" + $datetext.Text + ".log"

и вместо datetext.text ничего не сохраняет, пустое поле. Только .log
function txtbox ($datetext, $imei, $phone)
    {
        $date = Get-Date -Format "dd.MM.yyyy HH:mm:ss"
        $msg = $date + "`t Выдан телефон: " + $phone + $datetext.text + "`t IMEI: " + $imei.Text + "123123"

        #Записываем всё в тхт файл
        Out-File -FilePath $txtfile -InputObject $msg -Append -Encoding unicode
       
#combobox
    $itembox = New-Object System.Windows.Forms.ComboBox
    $itembox.AutoSize = 1
    $itembox.Location = New-Object System.Drawing.Point(40,40)
    #перечисление устройств в массиве
    $itembox.DataSource = @("Samsung A12", "Redmi Note A6", "Другое:", "4")


#button
    $but_imei = New-Object System.Windows.Forms.Button
    $but_imei.text = "Записать"
    $but_imei.Location = "400,100"
    $but_imei.AutoSize = 1
    $but_imei.Add_Click(
    {
    IMEI
    dateusers 
    $phone = $itembox.SelectedItem
    write-host = $phone
    }
    )  

    }
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
$itembox.Items[$itembox.SelectedIndex].ToString()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@MaxKozlov Куратор тега PowerShell
Вот этот вот кусок вообще не имеет смысла
$but_imei.Add_Click(
    {
    IMEI
    dateusers 
    $phone = $itembox.SelectedItem
    write-host = $phone
    }
    )

Если IMEI и dateusers это не функции без параметров
а "write-host = $phone" конечно не синтаксическая ошибка благодаря функционалу write-host, но очень на неё похожа

В целом же, если разберётесь с ошибками, код рабочий
Вот в таком виде выдаёт на консоль содержимое комбобокса
add-type -AssemblyName System.Windows.Forms
$Form = New-Object System.Windows.Forms.Form
$Form.Size = New-Object System.Drawing.Size(500,400)
$Form.StartPosition = "CenterParent"
$itembox = New-Object System.Windows.Forms.ComboBox
    $itembox.AutoSize = 1
    $itembox.Location = New-Object System.Drawing.Point(40,40)
$itembox.DataSource = @("Samsung A12", "Redmi Note A6", "Другое:", "4")
$but_imei = New-Object System.Windows.Forms.Button
    $but_imei.text = "Записать"
    $but_imei.Location = "400,100"
    $but_imei.AutoSize = 1
    $but_imei.Add_Click(
    {
      write-host $itembox.SelectedItem -fore green
    }
    )  
$Form.Controls.Add($itembox)
$Form.Controls.Add($but_imei)
$Form.ShowDialog()
Ответ написан
@NortheR73
системный инженер
вместо datetext.text ничего не сохраняет
- эта переменная как определяется и какова ее область видимости - весь скрипт или функция txtbox? Тот же вопрос про переменную $phone.
Я так понимаю, что это не весь код, поэтому выглядит он весьма сумбурно
Ещё момент: в предыдущем вопросе вам уже говорили, что использовать двоеточия в именах файлов недопустимо.

P.S. у вас у чистом виде табличные данные, поэтому вместо текстовых файлов я бы сохранял их в Excel или SQL Express
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы