Форум программистов, компьютерный форум CyberForum.ru

Тело на с++, интерфейс на с#. Как сляпать это добро? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Возможно ли преобразовать в число, строку вида: http://www.cyberforum.ru/cpp-beginners/thread1079622.html
Если дана строка, например, (1+4+5+7), она может быть преобразована в число?
C++ Найти сумму чисел в диапазоне [a;b], которые при возведении в квадрат дают число с последней цифрой 6 Вводятся числа a и b. Найти сумму таких чисел в диапазоне , которые при возведении в квадрат дают число с последней цифрой 6 Помогите исправить ошибку! #include <iostream> using namespace std; int main () { http://www.cyberforum.ru/cpp-beginners/thread1079612.html
Вычислить и вывести в виде таблицы значения функции, заданной рядом Тейлора C++
Добрый день, прошу помощи, ибо у самого курс данного языка был давно и всего не вспомню. Вычислить и вывести на экран в виде таблицы значения функции заданной с помощью ряда Тейлора на интервале от Хнач до Хкон с шагом dx c точностью ε. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.
C++ Ошибка в коде
Форумчане, подскажите где ошибка: #include<conio.h> #include<iostream> #include<cmath> #include<cctype> #include<cstring> using namespace std; int main(){ setlocale(LC_ALL, "Russian");
C++ Простой пример класса http://www.cyberforum.ru/cpp-beginners/thread1079584.html
Листинг 6.8. Объявление классов точки и прямоугольника // Начало файла Rect.hpp #include <iostream.h> class Point // хранит координаты x,y { // нет конструктора, используется конструктор по умолчанию public: void SetX(int x) { itsX = x; > void SetY(int у) { itsY = у; } int GetX() const < return itsX;}
C++ Написать программу, которая печатает целочисленные эквиваленты ряда прописных и строчных букв Нужно написать программу, которая печатает целочисленные эквиваленты ряда прописных и строчных букв, цифр и специальных символов. (Для A,B,C,a,b,c,0,1,2,$,*,+,/ и пробела). Покажите для одного , я доделаю сам , спасибо! подробнее

Показать сообщение отдельно
TeachMeC
18 / 18 / 4
Регистрация: 10.01.2014
Сообщений: 45
24.01.2014, 13:39     Тело на с++, интерфейс на с#. Как сляпать это добро?
Suslo, портировал 3 функции (всего)
из msvcrt.dll : fopen, fgets, fclose
У вас будут свои функции или своя .dll.
Цитата Сообщение от TeachMeC Посмотреть сообщение
2) C++/CLI
В случае с C++/CLI функции помещаются в управляемую сборку.
Сборка потом добавляется к проекту на 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// CPPCliClassLibrary1.h
 
#pragma once
 
#include <cstdio>
#include <cstring>
#include <vcclr.h>
using namespace System;
using namespace System::Runtime::InteropServices;
 
namespace CPPCliClassLibrary1 {
 
 
    public ref class FileReader 
    {
    public:
        FileReader(String^ fileName);
        ~FileReader();
        !FileReader();
        void FileClose();
        String^  ReadString();
        static FILE * FileReader::OpenFile(String^ fileName);
    private:
        FILE * pFile;
        bool disposed;
 
    };
 
    FileReader::FileReader(String^ fileName) 
        : disposed ( false), pFile(OpenFile(fileName))
    {
    }
 
    FILE * FileReader::OpenFile(String^ fileName)
    {
      
        const char* chFileName = (const char*)(Marshal::StringToHGlobalAnsi(fileName)).ToPointer();    
        FILE * mFile = fopen (chFileName, "r");
        Marshal::FreeHGlobal(IntPtr((void*)chFileName ));
        return mFile;
    }
 
    FileReader::~FileReader()
    {
        if( !  disposed)
            this->!FileReader();
    }
 
    FileReader::!FileReader()
    {
        fclose(pFile);
    }
 
    void FileReader::FileClose()
    {
        fclose(pFile);
        disposed = true;
    }
 
    String^  FileReader::ReadString()
    {    
        char buffer[100]= {{'\0'}}; 
        fgets (buffer , 100 , pFile);
        return gcnew String(buffer);    
    }
}

Цитата Сообщение от TeachMeC Посмотреть сообщение
3) технология Pinvoke
Пишем класс на C#, в нем используем функции из msvcrt.dll
Кликните здесь для просмотра всего текста
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 public class FileReader : IDisposable
    {
        #region Native Methods
        [DllImport("msvcrt.dll", SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
        static extern IntPtr fopen(String filename, String mode);
        [DllImport("msvcrt.dll", SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
        static extern Int32 fclose(IntPtr file);
        [DllImport("msvcrt.dll", SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
        static extern IntPtr fgets(StringBuilder str, int num, IntPtr stream);
        #endregion
 
      
        public FileReader(String fileName)
        {
            pFile = fopen(fileName, "r");
        }
        ~FileReader()
        {
            if (!disposed)
            {
                disposed = true;
                Dispose(false);
            }
        }
 
        public String ReadString()
        {
            StringBuilder stringBuilder = new StringBuilder(100);
            fgets(stringBuilder, 100, pFile);
            return stringBuilder.ToString();
        }
        private readonly IntPtr pFile;
        public bool disposed = false;
 
 
 
 
        public void Dispose()
        {
            if (!disposed)
            {
                disposed = true;
                Dispose(true);
                GC.SuppressFinalize(this);
            }
        }
 
        public void Close()
        {
            Dispose();
        }
 
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                // managed objects
            }
            // unmanaged objects and resources
            fclose(pFile);
        }
 
 
    }

Вызов будет одинаковый в обоих случаях. Например в C#WindowsForms.
При нажатии кнопки RichTextBox заполнится содержимым файла
Кликните здесь для просмотра всего текста
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
  const string filepath = @"Documents\myTextFile.txt";
 
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (! System.IO.File.Exists(filepath))
            {
                 
                MessageBox.Show("File not found");
                return;
            }
           
                using (FileReader fileReader = new FileReader(filepath))
                {
                    while (true)
                    {
                        String line = fileReader.ReadString();
                        if (String.IsNullOrEmpty(line))
                        {
                            break;
                        }
                        richTextBox1.AppendText(line);
                    }
                }
           
        }
 
Текущее время: 14:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru