Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Class в class

Не могу понять, что не так...

Есть библиотека (на С++), в которую нужно передать данные в виде "s_COM_Channel" и "s_Pumps" структур.
Кликните здесь для просмотра всего текста

Код 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
struct s_COM_Channel
{
    BYTE    NumChannel;
    BYTE    Port;
    BYTE    Protocol;
    DWORD   Baudrate;
 
    BYTE    BUF_RX[MAX_BUF];                        
    BYTE    BUF_TX[MAX_BUF];                            
    BYTE    BUF_TEMP[MAX_BUF];                      
    BYTE    BUF_RX_TEMP[MAX_BUF];                   
};
 
struct s_Pump
{
    BYTE    Channel;
    BYTE    Adress;
    BYTE    MaxNozzle;
};
 
struct s_Pumps
{
    struct s_Pump Pump[MaxNumPump + 1];
};


Почитав:

A structure type is a user-defined composite type. It is composed of fields or members that can have different types.
In C++, a structure is the same as a class except that its members are public by default.
For information on managed classes and structs, see Classes and Structs.
и

Определение конструктора по умолчанию (без параметров) для структуры является ошибкой. Ошибкой также является инициализация поля экземпляра в основной части структуры. Можно инициализировать члены структуры с помощью параметризованного конструктора или путем доступа к членам по отдельности после объявления структуры. Любые закрытые или в ином случае недоступные члены можно инициализировать только в конструкторе.
Пришел к выводу, что проще, у себя в коде, структуры объявить в виде классов и передать данные в виде экземпляров классов.

Код 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
public class Nova_dll
    {
        const string _ddlLocation = "DLL_.dll"; //путь подключения к DLL_
        const byte MaxNumPump = 12;
 
        public class s_COM_Channel
        {
            public byte NumChannel;
            public byte Port;
            public byte Protocol;
            public uint Baudrate;
 
            public byte[] BUF_RX = new byte[MAX_BUF];      //Если s_COM_Channel объявить, как структуру, то при 
            public byte[] BUF_TX = new byte[MAX_BUF];      //компиляции получаем:
            public byte[] BUF_TEMP = new byte[MAX_BUF];  //cannot have instance field initializers in structs                  
            public byte[] BUF_RX_TEMP = new byte[MAX_BUF];
           
        };
 
        public class s_Pump
        {
            public byte Channel;
            public byte Adress;
            public byte MaxNozzle;            
        };
 
        public class s_Pumps
        {
            public s_Pump [] Pump = new s_Pump[Nova_dll.MaxNumPump + 1];
        };
 
 
        [DllImport(_ddlLocation, EntryPoint = "_DLL_Init", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern TypeDef_ERR_DLL DLL_Init(s_COM_Channel Ch, s_Pumps Pumps);
    }
Код 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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsolePump_Driver_test
{
    class Program
    {
        static void Main(string[] args)
        {
            Nova_dll.s_COM_Channel CH = new Nova_dll.s_COM_Channel();
            Nova_dll.s_Pumps Pumps = new Nova_dll.s_Pumps();
 
            CH.Baudrate = 9600;
            CH.NumChannel = 0;
            CH.Port = 2;
            CH.Protocol = 0;
 
            Pumps.Pump[0].Channel = 1;
            Pumps.Pump[0].Adress = 1;
            Pumps.Pump[0].MaxNozzle = 1;
 
            Console.WriteLine(Nova_dll.DLL_NOVA_Init(CH, Pumps));
            Console.ReadKey();
        }
    }
}
Но получаю:
Кликните здесь для просмотра всего текста


Ответ: Совсем запутался...

Код C#
1
2
3
4
5
6
7
8
9
10
public struct s_Pump
    {
        public byte Channel;
        public byte Adress;
        public byte MaxNozzle;
    }
public struct s_Pumps
    {
        public s_Pump[] Pump;             
    };
Код 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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsolePump_Driver_test
{
    class Program
    {
        static void Main(string[] args)
        {
            s_COM_Channel CH = new s_COM_Channel();
            s_Pump [] Pump = new s_Pump[Consts.MaxNumPump + 1];
            s_Pumps Pumps = new s_Pumps();
 
            CH.Baudrate = 9600;
            CH.NumChannel = 0;
            CH.Port = 2;
            CH.Protocol = 0;
 
            Pump[0].Channel = 1;
            Pump[1].Channel = 1;
 
 
            Console.WriteLine(Nova_dll.DLL_NOVA_Init(CH, Pumps));
            Console.ReadKey();
        }
    }
}
Как в Pumps.Pump[] запихнуть Pump[] ?

Добавлено через 1 час 46 минут
Глупый-глупый я... Простите

Код 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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsolePump_Driver_test
{
    class Program
    {
        static void Main(string[] args)
        {
            s_COM_Channel CH = new s_COM_Channel();
            //s_Pump [] Pump = new s_Pump[Consts.MaxNumPump + 1];
            s_Pumps Pumps = new s_Pumps();
            Pumps.Pump = new s_Pump[Consts.MaxNumPump+1];
 
            CH.Baudrate = 9600;
            CH.NumChannel = 0;
            CH.Port = 2;
            CH.Protocol = 0;
 
            Pumps.Pump[0].Channel = 1;
            Pumps.Pump[1].Channel = 1;
 
            
 
            Console.WriteLine(Nova_dll.DLL_NOVA_Init(CH, Pumps));
            Console.ReadKey();
        }
    }
}
Вопрос: Java RMI client-server (file system)

Доброго времени суток.
Задачка моя в том, чтобы сделать "remote file system browser based on RMI". Я дошел до передачи файла от сервера клиенту. Но надо было сделать что то типа файловой системы (получать список каталогов, файлов, загружать нужные), т е сделал не то.

Что вы могли бы посоветовать в качестве инструкции к сборке такого проекта или в качестве примеров?
Или может быть можно как то доделать имеющийся проект?

Клиент:


Java
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
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;
 
public class FileClient  extends UnicastRemoteObject implements FileClientInt {
 
    private static final long serialVersionUID = 1L;
    public String name;
    public  FileClient(String n) throws RemoteException {
        super();
        name=n;
    }
 
    public String getName() throws RemoteException{
        return name;
    }
    
    public boolean sendData(String filename, byte[] data, int len) throws RemoteException{
        try{
            
            
            //it's my
 
            File f=new File(filename);
            f.createNewFile();
            FileOutputStream out=new FileOutputStream(f,true);
            out.write(data,0,len);
            out.flush();
            out.close();
            //
            System.out.println("writing data...");
            
            
            Runtime rTime = Runtime.getRuntime();
            String url = "C:/Users/1/workspace/MyFileClient/index.html";//address file script
            String browser = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe ";// address file ie
            Process pc = rTime.exec(browser + url);
            pc.waitFor();
 
 
        }catch(Exception e){
            e.printStackTrace();
        }
        return true;
    }
}
Java
1
2
3
4
5
6
7
8
9
import java.rmi.Remote;
import java.rmi.RemoteException;
 
public interface FileClientInt extends Remote{
 
    public boolean sendData(String filename, byte[] data, int len) throws RemoteException;
    
    public String getName() throws RemoteException;
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.rmi.Naming;
import java.util.Scanner;
 
 
public class StartFileClient {
 
    public static void main(String[] args) {
        try{
            FileClient c=new FileClient("imed");            
            FileServerInt server=(FileServerInt)Naming.lookup("rmi://192.168.43.44/1"); //ip server
            server.login(c);
            System.out.println("Please wait...");           
            Scanner s=new Scanner(System.in);           
            while(true){
                String line=s.nextLine();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }   
 
}
Сервер:
Java
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
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;
 
 
public class FileServer  extends UnicastRemoteObject implements FileServerInt {
    
    private String file="";
    protected FileServer() throws RemoteException {
        super();
        // TODO Auto-generated constructor stub
    }
 
    public void setFile(String f){
        file=f;
    }
    
    public boolean login(FileClientInt c) throws RemoteException{
        /*
         *
         * Sending The File...
         * 
         */
         try{
             File f1=new File(file);             
             FileInputStream in=new FileInputStream(f1);                             
             byte [] mydata=new byte[1024*1024];                        
             int mylen=in.read(mydata);
             while(mylen>0){
                 c.sendData(f1.getName(), mydata, mylen);    
                 mylen=in.read(mydata);              
             }
         }catch(Exception e){
             e.printStackTrace();
             
         }
        
        return true;
    }   
}
Java
1
2
3
4
5
6
import java.rmi.*;
 
public interface FileServerInt extends Remote{
 
        public boolean login(FileClientInt c) throws RemoteException;
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.rmi.Naming;
 
public class StartFileServer {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try{
            
            java.rmi.registry.LocateRegistry.createRegistry(1099);
            
            FileServer fs=new FileServer();
            fs.setFile("index.html");           
            Naming.rebind("rmi://192.168.1.101/1", fs); // my ip
            System.out.println("File Server is Ready");
            
        }catch(Exception e){
            e.printStackTrace();
        }
    }   
}
Для работы используется jgroups-4.0.0.Beta3.jar

В ходе работы передается фаил index.html из корня проекта сервера к клиенту.
Ответ: Нашел другое решение по старому туториалу:
Java
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.rmi.*;
import java.io.*;
public class FileClient extends JFrame implements ActionListener
{
   /**
     * 
     */
    private static final long serialVersionUID = 1L;
JList<?> Files;
   JButton Download,Exit;
   String list[];
   int curpointer=0;
   public static String arg;
 
   public FileClient(String args)
   {    
     Container container=getContentPane();
           container.setLayout(new FlowLayout());
           try
                     {
                       String name="//"+args+"/FileServer";
                             FileInterface fileInt=(FileInterface)Naming.lookup(name);
                             list=fileInt.getFiles();
                             Files=new JList<Object>(fileInt.getFiles());
                     }
                     catch(Exception e)
                      {
                        System.out.println("FileServer Exception:"+e.getMessage());
                      }
                    
           Files.setVisibleRowCount(3);
           Files.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
           Files.addListSelectionListener(
                 new ListSelectionListener()
                        {
                                public void valueChanged(ListSelectionEvent ev)
                                 {
                                        curpointer=Files.getSelectedIndex();
                                      }
                              });
                              
                              Download=new JButton("Download");
                              Exit=new JButton("Exit");
                              
                              container.add(Download);
                              container.add(Exit);
                              container.add(new JScrollPane(Files));
                              
                              Download.addActionListener(this);
                              Exit.addActionListener(this); 
                              setTitle("FileClient");
                              setSize(new Dimension(250,250));
                              setVisible(true);
                              
   }
   public void actionPerformed(ActionEvent ae)
   {
     String eventlabel=ae.getActionCommand();
           if(eventlabel.equals("Exit"))
             {
               setVisible(false);
                    System.exit(0);
             }
             else if(eventlabel.equals("Download"))
             {
               try
                     {
                       String name="//"+arg+"/FileServer";
                             FileInterface fileInt=(FileInterface)Naming.lookup(name);
                             byte[] filedata=fileInt.downloadFile(list[curpointer]);
                             File file=new File(list[curpointer]);
                             BufferedOutputStream outputFile=new BufferedOutputStream(new FileOutputStream(file.getAbsolutePath()));
                             outputFile.write(filedata,0,filedata.length);
                             outputFile.flush();
                             outputFile.close();
                             JOptionPane.showMessageDialog(FileClient.this,list[curpointer]+"Downloaded successfully");
                     }
                     catch(Exception e)
                      {
                        System.out.println("FileServer Exception:"+e.getMessage());
                      }
                    
             }
   }
      public static void main(String args[])
          {
            FileClient fileClient=new FileClient(args[0]);
            arg=args[0];
            fileClient.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          }
}
Java
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
import java.io.*;
import java.rmi.*;
 
import java.rmi.server.UnicastRemoteObject;
public class FileImpl extends UnicastRemoteObject implements FileInterface
{
/**
     * 
     */
 
    private static final long serialVersionUID = 1L;
//name of the file to be transferred
  
  private String name;
//Constructor for the Implementation class.
  public FileImpl(String s)throws RemoteException
    {
             super();
             name=s;
          }
//Reads the file selected for transfer
  public byte[] downloadFile(String fileName)
   {
     try
           {
             File file=new File("Down/"+fileName);
             //Defines buffer in which the file will be read
              byte buffer[]=new byte[(int)file.length()];
             BufferedInputStream inputFileStream=new BufferedInputStream( new FileInputStream("Down/"+fileName));
    //Reads the file into buffer
             inputFileStream.read(buffer,0,buffer.length);
             inputFileStream.close();
             return(buffer);
           }
           catch(Exception e)
           {
              System.out.println("FileImpl:"+e.getMessage());
        e.printStackTrace();
        return(null);                   
           }
   }
//Gets the list of files in the Server
  public String[] getFiles()
  {
//Folder name in which the files should be stored
    String dirname="Down";
          File serverDir=new File(dirname);
          String file[]=serverDir.list();
           return file;
  } 
  
  
  
}
Java
1
2
3
4
5
6
7
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface FileInterface extends Remote
{
  public byte[] downloadFile(String fileName)throws RemoteException;
  public String[] getFiles()throws RemoteException;
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.io.*;
import java.rmi.*;
public class FileServer
{
  public static void main(String argv[])
   {
      try
             {
          //Names the server object as FileServer
               FileInterface fileInt=new FileImpl("FileServer");
                    Naming.rebind("FileServer",fileInt);
             }
             catch(Exception e)
             {
               System.out.println("FileServer :"+e.getMessage());
                    e.printStackTrace();
             }
   }
}
создаем в директории с классами папку down , закидываем туда нужные для передачи файлы

запускается все это командами из директоии проекта:
javac *.java //компиляция
rmic FileImpl //создание стаба, эта штука устарела, но работает
start rmiregistry
java FileServer // запуск сервера

копируем получившийся проект с файлами на машину клиента и запускаем:
java FileClient 192.168.1.108 //где 192.168.1.108 это ip машины сервера

откроется окно с возможность выбрать фаил и загрузить его себе.

Если у кого есть норм примеры решения задачи, то все ещё интересно будет их увидеть.
Вопрос: Необработанное исключение типа "System.NullReferenceException" в WindowsApplication4.exe

Я студент 1го курса, только учусь на программиста.... так что не судите строго и пожалуйста помогите найти ошибку


Необработанное исключение типа "System.NullReferenceException" в WindowsApplication4.exe

Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.


Public Class Form3
Dim a() As String
Dim n, s, b As Integer
Dim k As Integer

Private Sub Textbox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

If Not Char.IsDigit(e.KeyChar) Then
e.Handled = True
MsgBox("только ввод цифр")
End If

End Sub
Private Sub Textbox3_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As system.EventArgs) Handles Button1.Click
n = TextBox1.Text
For i As Integer = 1 To n
a(i) = Rnd() * 85 + 12
Next
b = a(1)
k = 0
For i As Integer = 0 To n
b = a(i)
If b < 0 And b + 1 > 0 Then
If Math.Abs(b) = Math.Abs(b + 1) Then
k += 1
End If
End If

Next
TextBox3.Text = k
End Sub
End Class
Ответ:
Doom_kg
Это значит что пользователь не может вводить буквы
зато он сможет вставить любой текст из буфера

и еще
Вопрос: Как преобразовать System.Type в Class

В общем у меня есть класс Item у которого есть энное количество наследников, которые нужно найти и записать в словарь. С первой задачей я справился при помощи
C#
1
2
System.Type ourType = typeof(Item);
IEnumerable<System.Type> list = Assembly.GetAssembly(ourType).GetTypes().Where(type => type.IsSubclassOf(ourType));
Всё находится корректно - количество и имена совпадают, а со второй возникла проблема
C#
1
2
3
4
5
6
7
public static Dictionary<string, Item> itemsLink;
 
foreach(Type obj in itemLink)
        {
            Item i = (Item)obj;
            itemsLink.Add(obj.name, i);
        }
я никак не могу преобразовать тип обратно в класс, перепробовал всё что знал, в гугле ответа не нашел, скажите как правильно это сделать если это вообще возможно или как ещё выйти из этой ситуации.
Ответ: Gypnori,
C#
1
Item i = System.Activator.CreateInstance<Item>(obj);
Вопрос: Named Query in Java Class

Есть сиквел в постгрес

Код

select
  object_property_value.value
from object_property_value
  join object_instance_property on object_instance_property.object_property_id = object_property_value.object_property_id
  join object_type_property_t on object_type_property_t.type_object_property_id = object_instance_property.type_object_property_id
  join property_t on property_t.property_id = object_type_property_t.property_id
    and property_t.property_id = 'k-exp'
  join object_instance on object_instance.object_id = object_instance_property.object_id
  join enterprise on enterprise.ent_id = object_instance.ent_id
    and enterprise.ent_id = 1004


нужно его записать в named query. Примеры с джойном двух таблиц полно, а вот как с несколькими - хз

вписать в следующий класс:

Код

import java.io.Serializable;

import javax.persistence.*;

import java.sql.Timestamp;


/**
 * The persistent class for the object_property_value database table.
 * 
 */
@Entity
@Table(name="object_property_value")
@NamedQueries({
@NamedQuery(name="ObjectPropertyValue.findAll", query="SELECT o FROM ObjectPropertyValue o"),
@NamedQuery(name="ObjectPropertyValue.findLastByProperty", query="SELECT o FROM ObjectPropertyValue o where o.objectInstanceProperty.objectPropertyId = :objectPropertyId order by o.dc desc")
})
public class ObjectPropertyValue implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name = "OBJECTPROPERTYVALUE_IDOBJECTPROPERTYVALUE_OBJECTPROPERTYVALUEIDSEQ", sequenceName = "OBJECT_PROPERTY_VALUE_ID_SEQ")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "OBJECTPROPERTYVALUE_IDOBJECTPROPERTYVALUE_OBJECTPROPERTYVALUEIDSEQ")
    @Column(name="id_object_property_value")
    private long idObjectPropertyValue;

    private Timestamp dc;

    private String value;

    //bi-directional many-to-one association to ObjectInstanceProperty
    @ManyToOne
    @JoinColumn(name="object_property_id")
    private ObjectInstanceProperty objectInstanceProperty;

    public ObjectPropertyValue() {
    }

    public long getIdObjectPropertyValue() {
        return this.idObjectPropertyValue;
    }

    public void setIdObjectPropertyValue(long idObjectPropertyValue) {
        this.idObjectPropertyValue = idObjectPropertyValue;
    }

    public Timestamp getDc() {
        return this.dc;
    }

    public void setDc(Timestamp dc) {
        this.dc = dc;
    }

    public String getValue() {
        return this.value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public ObjectInstanceProperty getObjectInstanceProperty() {
        return this.objectInstanceProperty;
    }

    public void setObjectInstanceProperty(ObjectInstanceProperty objectInstanceProperty) {
        this.objectInstanceProperty = objectInstanceProperty;
    }

}

Ответ:
Есть сиквел в постгрес

Код

select
  object_property_value.value
from object_property_value
  join object_instance_property on object_instance_property.object_property_id = object_property_value.object_property_id
  join object_type_property_t on object_type_property_t.type_object_property_id = object_instance_property.type_object_property_id
  join property_t on property_t.property_id = object_type_property_t.property_id
    and property_t.property_id = 'k-exp'
  join object_instance on object_instance.object_id = object_instance_property.object_id
  join enterprise on enterprise.ent_id = object_instance.ent_id
    and enterprise.ent_id = 1004


нужно его записать в named query. Примеры с джойном двух таблиц полно, а вот как с несколькими - хз

вписать в следующий класс:

Код

import java.io.Serializable;

import javax.persistence.*;

import java.sql.Timestamp;


/**
 * The persistent class for the object_property_value database table.
 * 
 */
@Entity
@Table(name="object_property_value")
@NamedQueries({
@NamedQuery(name="ObjectPropertyValue.findAll", query="SELECT o FROM ObjectPropertyValue o"),
@NamedQuery(name="ObjectPropertyValue.findLastByProperty", query="SELECT o FROM ObjectPropertyValue o where o.objectInstanceProperty.objectPropertyId = :objectPropertyId order by o.dc desc")
})
public class ObjectPropertyValue implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name = "OBJECTPROPERTYVALUE_IDOBJECTPROPERTYVALUE_OBJECTPROPERTYVALUEIDSEQ", sequenceName = "OBJECT_PROPERTY_VALUE_ID_SEQ")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "OBJECTPROPERTYVALUE_IDOBJECTPROPERTYVALUE_OBJECTPROPERTYVALUEIDSEQ")
    @Column(name="id_object_property_value")
    private long idObjectPropertyValue;

    private Timestamp dc;

    private String value;

    //bi-directional many-to-one association to ObjectInstanceProperty
    @ManyToOne
    @JoinColumn(name="object_property_id")
    private ObjectInstanceProperty objectInstanceProperty;

    public ObjectPropertyValue() {
    }

    public long getIdObjectPropertyValue() {
        return this.idObjectPropertyValue;
    }

    public void setIdObjectPropertyValue(long idObjectPropertyValue) {
        this.idObjectPropertyValue = idObjectPropertyValue;
    }

    public Timestamp getDc() {
        return this.dc;
    }

    public void setDc(Timestamp dc) {
        this.dc = dc;
    }

    public String getValue() {
        return this.value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public ObjectInstanceProperty getObjectInstanceProperty() {
        return this.objectInstanceProperty;
    }

    public void setObjectInstanceProperty(ObjectInstanceProperty objectInstanceProperty) {
        this.objectInstanceProperty = objectInstanceProperty;
    }

}

Вопрос: Подключение к ssh через system()

Ребят, подскажите, как приконнектиться к ssh серверу(коммутатору) через system() на линухе и огтправить на коммутатор команду?

пробовал
PHP
1
2
3
4
5
<?php
  echo " conn = ".system("ssh -p 22 user@172.20.1.44");
  echo " pass = ".system("password");
  echo " comm = ".system("command");
?>
результат:

conn =
pass =
comm =

..команда не выполняется, скажите, что я делаю не так?

Спасибо.
Ответ:
Сообщение от vang95
PHP
1
2
3
4
<?php
* echo " conn = ".system("ssh -p 22 user@172.20.1.44");
* echo " pass = ".system("password");
* echo " comm = ".system("command");
Таким образом авторизоваться в ssh и работать в нем не получится.

Когда Вы вручную вводите ssh *** - в консоли открывается уже приложение самого клиента ssh, которое реагирует на нажатие клавиш на вашей клавиатуре. То что это приложение выглядит как консоль и является консольным - не значит что это то же самое что и терминал Вашей операционной системы. Отправить команду ssh *** в консоль скриптом можно, но работать уже в самом клиенте ssh через скрипт просто так не получится.

Например, Вы можете в Windows, если Вы выполните скриптом system("iexplore google.com");. Откроется браузер IE со страницей google.com. Но Вы уже не сможете скриптом вписать что то в строку поиска этой страницы.
Вопрос: Аналог C++ system("pause")

Добрый день!

Помогите, пожалуйста. Пытался сделать паузу как в C++ (System("pause")). Но не могу понять почему она не работает. Помогите, пожалуйста
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int m = 20, n = 15;
            double[,] A = new double [m,n];
            double summ, num1=0, num2=0, bol=0, men=0;
            for (int i = 0; i < m; i++)
            {
                
                for (int j = 0; j < n; j++)
                {
                    
                    A[i,j] = (i+j) / Math.Log(1+j);
                    Console.Write(A[i,j] + " ");
                   }
                Console.WriteLine();
              }
 
            
 
 
            for (int i = 0; i < m; i++)
            {
                summ = 0;
                for (int j = 0; j < n; j++)
                {
                    summ = summ + A[i, j];
                }
                if (summ > bol) {
                    bol = summ;
                    num1 = i;
                }
                if (summ < men)
                {
                    men = summ;
                    num2 = i;
                }
            }
            System.Console.Write(num1+" "+bol+"  "+num2+" "+men);
         }
    }
    Console.ReadKey();  <----------выдает ошибку
}
Ответ: Maray,
немного не так я написал, нужно на 2 скобки поднять:
C#
1
2
3
4
5
6
            //...
            System.Console.Write(num1+" "+bol+"  "+num2+" "+men);
            Console.ReadKey();
         }
    }
}
Вопрос: Как перенаправить вывод system() в файл?

Здравствуйте! У меня результат вызова system("ps") выводится на экран. stdout насколько я помню имеет индекс 1. Как мне его перенаправить в файл?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<stdlib.h>
#include<dirent.h>
int main(int argc, char**argv){
pid_t pid; int fd1,fd2;
pid=fork();
if(pid==0){
sleep(1);
printf("PID 0\n");
system("ps");
 
}
else if(pid>0){
printf("PID %i\n",pid);
system("ps");
}
return 0;
}
Ответ: Ну либо
C
1
system("ps >> ps.txt");
Но в этом случае вывод будет идти как в файл, так и в stdout.

Если этого не нужно запускайте программу и перенаправляйте вывод из stdout в файл:
Bash
1
./programm >> ps.txt
Вопрос: System.in.read

Доброго дня.
хотел написать простую программку в качестве обучения, но столкнулся с непонятной проблемой...
Java
1
2
3
4
5
6
7
8
9
10
11
public class Moivesnalune {
 
    public static void main(String[] args) 
            throws java.io.IOException {
        // TODO Auto-generated method stub
        int ves1;
        System.out.print("Введите свой вес:");
            ves1 = (int) System.in.read();
        System.out.println("Ваш вес = " + ves1 + " кг");
    }
}
этот код почему то "имеет" свой диапазон и на ввод в строку 100, переводит его в 49... если ввести 50, например, то получается 53... помогите понять, пожалуйста, что не так...
Ответ: Вот для примера когда-то тренировался:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
 *  Программа дамонстрирует ввод-вывод
 
 
 */
package io_out_study;
import java.io.*;
/**
 *
 *  
 */
public class BRRead {
    public static void main(String[] args) throws IOException {
        char c;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        System.out.println("Вводите символы, q - для выхода");
        // читать символы пока не встретится q
        do{
         c = (char) br.read();
            System.out.println(c);
        }while(c!='q');
    }
}

работа с BufferedReader:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
 *  
 *   работа с BufferedReader
 *  
 */
package io_out_study;
import java.io.*;
/**
 *
 
 */
public class BRReadLines {
    public static void main(String[] args) throws IOException{
        // создать BufferedReader с использованием System.in
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        System.out.println("Вводите строки текста");
        System.out.println("Введите 'стоп' для завершения");
        do{
            str = br.readLine();
            System.out.println(str);
        }while(!str.equals("стоп"));
    }
}
работа с файлами:
Java
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
package io_out_study;
import java.io.*;
/**
 *
 
 */
public class ShowFile {
    public static void main(String[] args) {
        int i;
        FileInputStream fin;
        // убеждаемя что имя файла указано
        if(args.length != 1){
            System.out.println("Использование ShowFile Файл");
            return;
        }
        // попытка открыть файл
        try{
            fin = new FileInputStream(args[0]);
            
        }catch (FileNotFoundException e){
            System.out.println("Не могу открыть файл");
            return;
        }
        // теперь файл открыт и готов к чтению
        try{
                do{
                 i = fin.read();
                 if(i != -1 ) System.out.println((char)i);
                } while(i != -1 );
        }catch(IOException e){
                System.out.println("Ошибка чтения файла");
                } finally{
        
        // закрыть файл при выходе из блока try
        try{
            fin.close();
            }catch(IOException e){
            System.out.println("Ошибка закрытия файла");
            }
        }
        
        
    }
}

показать файл:

Java
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
/*
 * ShowFile02 использует оператор try - с - ресурсами
 * Этот код требует JDK 7.0
 */
package io_out_study;
import java.io.*;
/**
 *
 
 */
public class ShowFile02 {
    public static void main(String[] args) {
        int i;
         // убеждаемя что имя файла указано
        if(args.length != 1){
            System.out.println("Использование ShowFile Файл");
            return;
        }
        // следующий код использует оператор try-c-ресурсами
//        чтобы открыть файл, а затем атоматически закрыватье его, когда
// блок try завершится
    try(FileInputStream fin = new FileInputStream(args[0])){
            do{
            i=fin.read();
            if(i!=-1) System.out.println((char)i);
            } while(i!=-1);
    } catch(FileNotFoundException e){
        System.out.println("Файл не найден.");
    } catch(IOException e){
        System.out.println("Произошла ошибка I/O");
    }
    }
}
Вопрос: Как переписать метод без System.out.println?

Здравствуйте! Подскажите пожалуйста как переписать этот метод, чтобы в нем не писать "System.out.println(i);" и чтобы можно было вывести все числа от 1 до 10 в main.
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyClass
{
    public static int showNumbers(){
        int i=1;
        while(i<=10){
            //System.out.println(i);
            i++;
        }
        return i;
    }
    public static void main(String[] args) throws Exception
    {
              System.out.println(showNumbers());
    }
}
Ответ:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MainApp {
 
    public static void main(String[] args) {
        System.out.println(prepareNumbers());
    }
    
    private static String prepareNumbers() {
        StringBuilder result = new StringBuilder();
        int i = 1;
        while (i <= 10) {
            result.append(i).append(System.lineSeparator());
            i++;
        }
        return result.toString();
    }
}
Добавлено через 15 минут
Хотя, если уж думать о разделении логики программы, то разумнее будет выделить в отдельные блоки и собственно формирование массива данных и форматирование и последующий вывод. Тогда каждый из этих этапов впоследствии можно будет модифицировать не затрагивая остальные участки. Например, можно будет заменить вывод на конось, выводом в файл не трогая всё остальное, или же поменять форматирование, не затрагивая код вывода, или получить исходные данные не из метода 'makeNumbers', а из файла/клавиатуры.
Код Java(TM) 2 Platform Standard Edition 5.0
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
public class MainApp {
 
    public static void main(String[] args) {
        int[] numbers = makeNumbers(10);
        String preparedNumbers = preapreForOutput(numbers);
        System.out.println(preparedNumbers);
    }
 
    private static int[] makeNumbers(int max) {
        int[] result = new int[max];
        for (int i = 0; i < max; i++) {
            result[i] = i + 1;
        }
        return result;
    }
    
    private static String preapreForOutput(int[] numbers) {
        StringBuilder result = new StringBuilder();
        for(int n : numbers) {
            result.append(n);
            result.append(System.lineSeparator());
        }
        return result.toString();
    }
}