powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Функция возвращает строку C#
8 сообщений из 8, страница 1 из 1
Функция возвращает строку C#
    #38391364
Roman_80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день мастера C#
Перешел недавно на С#, сейчас мучаюсь со строками.
Нужно из ini файла захватить строку.
Функция чтения из ini возвращает строку. Я копирую ее, но при закрытии программы появляется ошибка.
Подскажите, пожалуйста, что именно не так делаю. Подозреваю что все дело связано со строками.
Привожу текст программы

Код: 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.
39.
40.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;


namespace ETGPARKING_ASKT
{
    class IniFile
    {
        private D _DB_loc = new D();
        public string IniReadString(string sSection, string sKey)
        {
            string path = Application.StartupPath + "\\option.ini";
            string sTmp = "";
            Win32.GetPrivateProfileString(sSection, sKey, "", sTmp, 100, path);
            return (sTmp);

        }

        public class Win32 // описание класса
        {
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            public static extern int MessageBox(int hWnd, String text,
                String caption, uint type);
            [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
            public static extern int GetPrivateProfileString(String sSection, String sKey, String sDefault,
                String sString, int iSize, String sFile);
            [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
            public static extern bool WritePrivateProfileString(String sSection, String sKey, String sString, String sFile);
        }

    }
}




и сам вызов

string conn = _IniFile.IniReadString("main", "connectionstring");
ConnLabel.Text = conn;
...
Рейтинг: 0 / 0
Функция возвращает строку C#
    #38391370
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman_80,

в С# юзать ini не кошерно
...
Рейтинг: 0 / 0
Функция возвращает строку C#
    #38391374
Roman_80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pation,

подскажите, пожалуйста, какие еще есть варианты?
...
Рейтинг: 0 / 0
Функция возвращает строку C#
    #38391384
Beresnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую подобный код без проблем.

Код: c#
1.
2.
3.
4.
5.
6.
string FileNameConfigIni = Application.StartupPath + @"\config.ini";
StringBuilder sb = new StringBuilder(256);
 
// Чтение значения ключа <Server> из секции [PGSQLConnectAssign] INI-файла config.ini            
GetPrivateProfileString("PGSQLConnectAssign", "Server", "", sb, sb.Capacity, FileNameConfigIni);
pgsqlServer = sb.ToString();
...
Рейтинг: 0 / 0
Функция возвращает строку C#
    #38391395
Roman_80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Beresnev,

код поменял на

Код: c#
1.
2.
3.
4.
5.
6.
7.
string path = Application.StartupPath + "\\option.ini";
            string sTmp = "";
            StringBuilder sb = new StringBuilder(256);
            //Win32.GetPrivateProfileString(sSection, sKey, "", sb, sb.Capacity, path);
            Win32.GetPrivateProfileString("PGSQLConnectAssign", "Server", "", sb, sb.Capacity, path);
            sTmp  = sb.ToString();
            return (sTmp);



появляется ошибка
Ошибка 1 Наиболее подходящий перегруженный метод для "GetPrivateProfileString(string, string, string, string, int, string)" имеет несколько недопустимых аргументов C:\Users\AAA\documents\visual studio 2012\Projects\AAA\AAA\IniFile.cs 25 13 AAA


Что я не так делаю?
...
Рейтинг: 0 / 0
Функция возвращает строку C#
    #38391398
Roman_80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Beresnev,

Ошибка 2 Аргумент "4": преобразование типа из "System.Text.StringBuilder" в "string" невозможно C:\Users\AAA\documents\visual studio 2012\Projects\AAA\AAA\IniFile.cs 25 79 AAA
...
Рейтинг: 0 / 0
Функция возвращает строку C#
    #38391408
Roman_80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заработал!

поменял тип

public static extern int GetPrivateProfileString(String sSection, String sKey, String sDefault,
StringBuilder sString, int iSize, String sFile);
...
Рейтинг: 0 / 0
Функция возвращает строку C#
    #38391825
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman_80Заработал!

поменял тип

public static extern int GetPrivateProfileString(String sSection, String sKey, String sDefault,
StringBuilder sString, int iSize, String sFile);
я думаю проблема в маппинге структуры, надо видеть исходную функцию. Обернуть с помощью студии не получилось?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Функция возвращает строку C#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]