C# - Problemi i rješenja izdvojena tema

poruka: 2.072
|
čitano: 415.271
|
moderatori: Danny_HR, Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
6 mjeseci
neaktivan
offline
C# - Problemi i rješenja

Pozdrav. imam problem treba da uradim jedan zadatak uz pomoc refleksije u c# a ne mogu nikako da ga uradim ako moze ko da mi pomogne .

"Korišćenjem refleksije, potrebno je ispitati osobine .NET klase String. Potrebno je prikazati naziv klase, njen prostor imena, naziv sklopa u kome se nalazi, tip koji nasleđuje, interfejse koje implementira, kao i osnovne informacije o tome da li je klasa apstraktna, zapečaćena, generička itd."

 
0 0 hvala 0
4 godine
offline
Re: C# - Problemi i rješenja

Poigraj se malo s typeof i klasom Type.

6 mjeseci
neaktivan
offline
C# - Problemi i rješenja

Hvala, nadosao sam i ja. bunilo me malo klasa Type jer ima i metoda GetType("System.string") ali dobro je vazno da sam skontao hvala.

 
0 0 hvala 0
6 mjeseci
neaktivan
offline
C# - Problemi i rješenja

Pozdrav imam jos jedno pitanje, treba da dinamicki napravim klasu i da iskoristim metodu medjutim ne uspjeva mi prilikom dinamickog pozivanja metode ako moze neko pomoci ? ov je sto sam do sada uspjeo da odradim i tu sam udario u zid..

 

namespace Dinamickokreiranjetipova
{
    class Country
    {
        public string Name { get; set; }
        public int Population { get; set; }
        public Country (string name, int population)
        {
            Name = name;
            Population = population;
        }
        public string GetCountryInfo()
        {
            return "Country " + Name + " has the population of " + Population + ".";
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Assembly assembly = null;
            try
            {
                assembly = Assembly.Load("Dinamickokreiranjetipova");
            }
            catch (FileNotFoundException exc)
            {

                Console.WriteLine(exc.Message);
            }

            Type country = assembly.GetType("Dinamickokreiranjetipova.Country");
            object obj = Activator.CreateInstance(country,new object[] {"Afrika",1 });
            Console.WriteLine($"Novi tip kreiran dinamicki: {obj}");

            MethodInfo methodInfo = country.GetMethod("GetCountryInfo");

            methodInfo.Invoke(obj);

            Console.ReadLine();
        }
    }
}

 
0 0 hvala 0
3 godine
neaktivan
offline
Re: C# - Problemi i rješenja

Pozdrav,

 

znači skoro si tamo.

Metoda .Invoke prima dva paramtera, objekt na kojem se pokušava izvršiti i polje parametara tipa "object" koji mora odgovarati broju i tipu parametara koje metoda koja se poziva prima.

Metoda koju ti pokušavaš pozvati ne prima paramtere pa možeš proslijediti prazno polje tipa "object".

 

            ...
            MethodInfo methodInfo = country.GetMethod("GetCountryInfo");

            object[] parameters = new object[]{}; //Stvoriš prazno polje i proslijediš ga kao drugi parametar u poziv metode.

            methodInfo.Invoke(obj, parameters); // Ne zaboravi ovaj poziv staviti u Console.WriteLine() jer metoda koju pozivaš vraća string pa ako to ne napraviš nećeš ništa dobiti na konzoli.
            ...

 

Pozdrav

 

6 godina
neaktivan
offline
C# - Problemi i rješenja

Pozdrav ekipa, trebam pomoc oko zadatka koji smo dobili. Radi se u grafickom sucelju unutar C#
Voljan sam sjesti preko Discorda, TS3, Skype, bilo cega,  i raditi na ovom seminaru koliko god treba uz pomoc. Do sada smo prosli kroz nekakve osnove rada sa matricama, datotekama i na zadnjim vježbama sa Windows Forms app (graficko sucelje). Do ove godine na seminarima nije bilo grafickih sucelja pa nitko iz visih godina ne moze/zeli pomoci. 
EDIT: Zadatak je rijesen uz pomoc jednog forumaša koji je htio ostati anoniman. Hvala! 

Poruka je uređivana zadnji put čet 16.5.2019 17:50 (crolux).
 
0 0 hvala 0
10 godina
offline
C# - Problemi i rješenja

Pozdrav,

 

Da li ima netko volje mi pročešljat kratki kontroler i popravit ili makar uočit 3 greškice koje ne mogu pronači...Radi se o C# .net jednostavnoj web aplikaciji. To mi je prva aplikacija u .netu te bio puno zahvalan na pomoći :)

Poruka je uređivana zadnji put pon 20.5.2019 16:27 (Rolac).
Moj PC  
0 0 hvala 0
11 godina
offline
Re: C# - Problemi i rješenja

Stavi tu kôd pa će se valjda netko već javiti. Iako ne kužim kako znaš da imaš 3 greške, ali ih ne možeš pronaći 

Dvije su stvari beskonačne - svemir i ljudska glupost. Za svemir nisam siguran - Einstein
11 godina
offline
C# - Problemi i rješenja

Oce mi neko objasnit sta krivo radim, ne ispise mi se nista. Znaci pokusavam lodat JSON i spremit ga kao objekt.

 

Ovdje je linije koda iz fila

{
  "WiFi": {
    "SSID": "MyCharterWiFi83-2G",
    "BSSID": "c4:04:15:0e:c0:83",
    "capabilities": "[WPA2-PSK-CCMP][WPS][ESS]",
    "level": "-38",
    "frequency": "2462",
    "time": "Saturday, November 1, 2014 12:01:38 AM Pacific Daylight Time"
  }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;

namespace wifi
{
    class Program
    {

        static void Main(string[] args)
        {
            string json = File.ReadAllText(@"primjer.txt");
            Wifi wifi = JsonConvert.DeserializeObject<Wifi>(json);
            Console.WriteLine(wifi.SSID);
            Console.Read();
        }

        public class Rootobject
        {
            public Wifi WiFi { get; set; }

        }

        public class Wifi
        {
            public string SSID { get; set; }
            public string BSSID { get; set; }
            public string capabilities { get; set; }
            public string level { get; set; }
            public string frequency { get; set; }
            public string time { get; set; }
        }

    }
}

[ Xfire: slickman25 ] [ Steam: ryou229 ] [ Battle.net: exzzy#2808 ] [ EUNE:exzzy ][EUW:exzzy]
Poruka je uređivana zadnji put sri 29.5.2019 20:04 (R4zOR229).
Moj PC  
0 0 hvala 0
11 godina
offline
Re: C# - Problemi i rješenja

Ako ti kontroliras JSON file, izbaci "WiFi {}" i radit ce taj kod

 

{
 "WiFi": {
    "SSID": "MyCharterWiFi83-2G",
    "BSSID": "c4:04:15:0e:c0:83",
    "capabilities": "[WPA2-PSK-CCMP][WPS][ESS]",
    "level": "-38",
    "frequency": "2462",
    "time": "Saturday, November 1, 2014 12:01:38 AM Pacific Daylight Time"
  }
}

Object reference not set to an instance of an object
11 godina
offline
Re: C# - Problemi i rješenja

Hvala, ali je problem jel imam par milijuna linija a ne samo jednu, tak da to nemogu izbaciti.

[ Xfire: slickman25 ] [ Steam: ryou229 ] [ Battle.net: exzzy#2808 ] [ EUNE:exzzy ][EUW:exzzy]
9 godina
offline
Re: C# - Problemi i rješenja
R4zOR229 kaže...

Hvala, ali je problem jel imam par milijuna linija a ne samo jednu, tak da to nemogu izbaciti.

 Ponavlja ti se negdje "WiFi" key u json-u ili je on jedinstven?

 

Ako je jedinstven možeš probati sa dictionary opcijom

https://www.newtonsoft.com/json/help/html/DeserializeDictionary.htm

 

Isto tako ako je riječ o stvarno kompleksnom jsonu možda je puno bolja deserijalizacija samo dijela jsona koji ti treba

https://www.newtonsoft.com/json/help/html/SerializingJSONFragments.htm

 

Kolega ispod je naveo najispravnije rješenje ukoliko je json ovakve strukture kakvu si naveo. Pretpostavljam da ti { prije "WiFi" key-a predstavlja početak cijeloga json-a, a ne vrijednost nekoga atributa koji je dio toga korijena. 

Poruka je uređivana zadnji put čet 30.5.2019 23:19 (fighterZu).
6 godina
offline
Re: C# - Problemi i rješenja

Prikazani JSON ne sadrži Wifi, nego Rootobject pa možeš deserijalizirati njega:

 

...
            Rootobject rootobject = JsonConvert.DeserializeObject<Rootobject>(json);
            Console.WriteLine(rootobject.WiFi.SSID);

2 godine
neaktivan
offline
Re: C# - Problemi i rješenja

DeserializeObject<Rootobject>(json);

 

i radit će ti.

11 godina
offline
C# - Problemi i rješenja

Hvala, ljudi evo sve je radilo. Sad imam jedan drugi problem, neki od logova nevaljaju, i za to sam siguran jel kad sam ih probao konvertirati u excel izbacilo je grešku, tako da sam siguran da je do njih a ne do koda(drugi radi sasvim normalno). Error koji mi izbaci je

 

-      ReadTimeout   'file.BaseStream.ReadTimeout' threw an exception of type 'System.InvalidOperationException'   int {System.InvalidOperationException}

 

Sad ja bi jednostavno preskocio string koji baca taj error ukoliko je to moguće, može čak i cijeli file. Ispod je kod makar kao što sam reko nije do koda sigurno

 

 static void Main(string[] args)
        {
            int counter = 0;
            string line;
           

            // Read the file and display it line by line.  
            System.IO.StreamReader file =
                new System.IO.StreamReader(@"log_11-1-2014.txt");
            while ((line = file.ReadLine()) != null)
            {
      
                if (line.StartsWith("{\"WiFi"))
                {
                    Rootobject rootobject = JsonConvert.DeserializeObject<Rootobject>(line);
                    Console.WriteLine(rootobject.WiFi.SSID);
                    Console.WriteLine(rootobject.WiFi.BSSID);
                    counter++;
                }
            }
 

            file.Close();
            Console.WriteLine("There were {0} lines.", counter);
            // Suspend the screen.  
            Console.ReadLine();
        }

        public class Rootobject
        {
            public Wifi WiFi { get; set; }

        }

        public class Wifi
        {
            public string SSID { get; set; }
            public string BSSID { get; set; }
            public string capabilities { get; set; }
            public string level { get; set; }
            public string frequency { get; set; }
            public string time { get; set; }
        }

    }

 

EDIT:riješio, bilo je jednostavnije nego šta sam mislio :D

[ Xfire: slickman25 ] [ Steam: ryou229 ] [ Battle.net: exzzy#2808 ] [ EUNE:exzzy ][EUW:exzzy]
Poruka je uređivana zadnji put sub 1.6.2019 16:32 (R4zOR229).
Moj PC  
0 0 hvala 0
11 godina
offline
C# - Problemi i rješenja

Opet ja :) , zanima me jel mogu ovdje dodat nesto sto bi mi mjenjalo ovaj string(vremenska zona) tj. ignoriralo bi ga. Jel kad njega nema radi sve ok, a i nije mi potreban

 

            string s = "Saturday, November 1, 2014 12:01:38 AM Pacific Daylight Time";
            var date = DateTime.ParseExact(s, "dddd, MMMM d, yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
            Console.WriteLine(date);
            Console.ReadKey();

 

Da budem precizniji na sto ciljam, ko kad u SQL upitu napisem '%' di mi % mjenja bilo koje charove, naravno ako je takvo što uopce moguce ovdje.

 

EDIT: Jos jedna stvar, nije mi ovdje jasno šta krivo radim. Znaci problem je u ovoj vanjskoj petlji izvrsi mi se samo za id=1

       static void Main(string[] args)
        {

            int id = 1;
           while (id <= 35)
            {
                int counter = 1;
                string line;
                System.IO.StreamReader file =
                new System.IO.StreamReader(@"C:path" + id + ".txt");
                StreamWriter SWifi = new StreamWriter(@"C:path" + id + ".txt");
                StreamWriter SBlue = new StreamWriter(@"C:path" + id + ".txt");
                StreamWriter SApp = new StreamWriter(@"C:path" + id + ".txt");
                StreamWriter SAct = new StreamWriter(@"C:path" + id + ".txt");
                StreamWriter SCall = new StreamWriter(@"C:path" + id + ".txt");
                StreamWriter SSMS = new StreamWriter(@"C:path" + id + ".txt");
                StreamWriter SLoc = new StreamWriter(@"C:path" + id + ".txt");

                while ((line = file.ReadLine()) != null)
                {

                    if (line.StartsWith("{\"WiFi"))
                    {
                        try
                        {
                            Rootobject rootobject = JsonConvert.DeserializeObject<Rootobject>(line);
                            SWifi.WriteLine(id + " | " + rootobject.WiFi.SSID + "|" + rootobject.WiFi.BSSID + "|" + rootobject.WiFi.capabilities + "|" + rootobject.WiFi.level + "|" + rootobject.WiFi.frequency);
                            counter++;
                        }
                        catch
                        { }
                    }
                    if (line.StartsWith("{\"Bluetooth"))
                    {
                        try
                        {
                            Rootobject rootobject = JsonConvert.DeserializeObject<Rootobject>(line);
                            SBlue.WriteLine(id + " | " + rootobject.Bluetooth.name + "|" + rootobject.Bluetooth.address + "|" + rootobject.Bluetooth.bondstatus);
                            counter++;
                        }
                        catch
                        { }
                    }
                    if (line.StartsWith("{\"Application"))
                    {
                        try
                        {
                            Rootobject rootobject = JsonConvert.DeserializeObject<Rootobject>(line);
                            SApp.WriteLine(id + " | " + rootobject.Application.ProcessName + "|" + rootobject.Application.Start + "|" + rootobject.Application.End);
                            counter++;
                        }
                        catch
                        { }
                    }
                    if (line.StartsWith("{\"Activity"))
                    {
                        try
                        {
                            Rootobject rootobject = JsonConvert.DeserializeObject<Rootobject>(line);
                            SAct.WriteLine(id + " | " + rootobject.Activity.start + "|" + rootobject.Activity.end + "|" + rootobject.Activity.type + "|" + rootobject.Activity.condfidence);
                            counter++;
                        }
                        catch
                        { }
                    }
                    if (line.StartsWith("{\"Call"))
                    {
                        try
                        {
                            Rootobject rootobject = JsonConvert.DeserializeObject<Rootobject>(line);
                            SCall.WriteLine(id + " | " + rootobject.Call.Number + "|" + rootobject.Call.Duration + "|" + rootobject.Call.Time);
                            counter++;
                        }
                        catch
                        { }
                    }
                    if (line.StartsWith("{\"SMS"))
                    {
                        try
                        {
                            Rootobject rootobject = JsonConvert.DeserializeObject<Rootobject>(line);
                            SSMS.WriteLine(id + " | " + rootobject.SMS.Address + "|" + rootobject.SMS.date);
                            counter++;
                        }
                        catch
                        { }
                    }
                    if (line.StartsWith("{\"Location"))
                    {
                        try
                        {
                            Rootobject rootobject = JsonConvert.DeserializeObject<Rootobject>(line);
                            SLoc.WriteLine(id + " | " + rootobject.Location.Latitude + "|" + rootobject.Location.Longtitude + "|" + rootobject.Location.Altitude + "|" + rootobject.Location.time + "|" + rootobject.Location.Accuracy + "|" + rootobject.Location.Provider + "|" + rootobject.Location.Speed);
                            counter++;
                        }
                        catch
                        { }
                    }

                   
                }
               id++;
                SWifi.Close();
                SBlue.Close();
                file.Close();
                Console.WriteLine("There were {0} lines.", counter);
                Console.ReadLine();
               

            }

[ Xfire: slickman25 ] [ Steam: ryou229 ] [ Battle.net: exzzy#2808 ] [ EUNE:exzzy ][EUW:exzzy]
Poruka je uređivana zadnji put sub 1.6.2019 23:46 (R4zOR229).
Moj PC  
0 0 hvala 0
6 godina
offline
Re: C# - Problemi i rješenja

Zašto koristiš prazan try-catch?

11 godina
offline
Re: C# - Problemi i rješenja

Zato sto mi određeni stringovi nisu u dobrom formatu te hocu preskociti te greske.

[ Xfire: slickman25 ] [ Steam: ryou229 ] [ Battle.net: exzzy#2808 ] [ EUNE:exzzy ][EUW:exzzy]
6 godina
offline
Re: C# - Problemi i rješenja

Onda preporučam da hvataš samo te JSON greške. Moguće da imaš problem s pisanjem kojeg prazan catch maskira.

11 godina
offline
Re: C# - Problemi i rješenja

Nije do toga, jel kad rucno mjenjam id gore sve normalno prode. I sad sam stavio

Newtonsoft.Json.JsonReaderException

u catch i ista stvar se događa

[ Xfire: slickman25 ] [ Steam: ryou229 ] [ Battle.net: exzzy#2808 ] [ EUNE:exzzy ][EUW:exzzy]
2 godine
neaktivan
offline
C# - Problemi i rješenja

Probaj sa for i vidi dal će ti radit.

Zašto koristiš toliko stream writer-a?

 
0 0 hvala 0
11 godina
offline
Re: C# - Problemi i rješenja

Probo sam vec, ista stvar. A streamwritere koristim jel jedino tak znam radit ispis u 6 razlicitih filova. Al nema veze riješio sam ja to vec sve rucno, ionako mi je ovo trebalo za one time thing.

[ Xfire: slickman25 ] [ Steam: ryou229 ] [ Battle.net: exzzy#2808 ] [ EUNE:exzzy ][EUW:exzzy]
11 godina
offline
C# - Problemi i rješenja

Opet ja xD, imam problem sa formatom double brojeva kad ih ubacujem u listu. Znaci kad ih je rucno ubacim

 

List<PointLatLng> points = new List<PointLatLng>();

            points.Add(new PointLatLng(35.8116039, 51.4158236));
            points.Add(new PointLatLng(35.8116491, 51.4159306));
            points.Add(new PointLatLng(35.8118829, 51.4158089));
            points.Add(new PointLatLng(35.8118829, 51.4158089));

 

Sve radi ok i nacrta mi poligone, ali kad ubacujem ovako iz sql querya ne dobivam nista

 

            {
                using (var reader = sqlCommand.ExecuteReader())

                {
                    while (reader.Read())
                    {

                        string value1 = reader.GetString(0);
                        string value2 = reader.GetString(1);
                        double val = Convert.ToDouble(value1);
                        double val2 = Convert.ToDouble(value2);
                        points.Add(new PointLatLng(val, val2));



                    }
                }
            }

 

Na slici se vidi razlika izmedu tih dviju vrsta inputa, a to je sta kad ubacujem preko petlje gubim tocku tako da pretpostavljam da zbog toga ne radi. Ali

points.Add(new PointLatLng());

me trazi double za input, i onda gubim tu tocku, pa ako neko zna nek me prosvjetli

 

EDIT: da sam prije pito prije bi skuzio, ali zanimljivo kak Convert.ToDouble zanemari tocku dok new PointLatLng vidi tocku.

 

 

[ Xfire: slickman25 ] [ Steam: ryou229 ] [ Battle.net: exzzy#2808 ] [ EUNE:exzzy ][EUW:exzzy]
Poruka je uređivana zadnji put čet 20.6.2019 23:16 (R4zOR229).
Moj PC  
0 0 hvala 0
10 godina
online
Re: C# - Problemi i rješenja
R4zOR229 kaže...

 

EDIT: da sam prije pito prije bi skuzio, ali zanimljivo kak Convert.ToDouble zanemari tocku dok new PointLatLng vidi tocku.

 

 

 

Rekao bi da te zafrkava točka, jer ti je OS na hr settingsima pa je decimalni separator zarez.

 

baci oko na https://dotnetfiddle.net/PiPWAV

 

Convert.ToDouble("10.5", new CultureInfo("en"))

11 godina
offline
Re: C# - Problemi i rješenja

da to je bio problem, radi sa

 

Convert.ToDouble(value2, System.Globalization.CultureInfo.InvariantCulture);

 

probo sam prije toga i sa zarezom i isto ne prepoznaje separator, stvarno cudno

[ Xfire: slickman25 ] [ Steam: ryou229 ] [ Battle.net: exzzy#2808 ] [ EUNE:exzzy ][EUW:exzzy]
8 godina
offline
C# - Problemi i rješenja

Lijep pozdrav svima, da ne otvaram novu temu postaviću pitanje ovdje.

Kako najefikasnije izvršiti metod specifikovan u MethodInfo klasi bez da znate njegove parametre (Parameters) i tip podatka koji vraća kao rezultat (Return Type) u momentu pisanja koda (At Compile Time)?

Pod terminom efikasno podrazumjevam da performanse prilikom velikog broja izvršavanja budu što bliže pozivu klasičnog (Native) metoda.

Poruka je uređivana zadnji put čet 25.7.2019 14:42 (Boky Milanovic).
 
0 0 hvala 0
7 godina
offline
Re: C# - Problemi i rješenja
Boky Milanovic kaže...

Lijep pozdrav svima, da ne otvaram novu temu postaviću pitanje ovdje.

Kako najefikasnije izvršiti metod specifikovan u MethodInfo klasi bez da znate njegove parametre (Parameters) i tip podatka koji vraća kao rezultat (Return Type) u momentu pisanja koda (At Compile Time)?

Pod terminom efikasno podrazumjevam da performanse prilikom velikog broja izvršavanja budu što bliže pozivu klasičnog (Native) metoda.

Probaj se poigrati s ovim.

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
8 godina
offline
Re: C# - Problemi i rješenja
pr0n_addict kaže...
Boky Milanovic kaže...

Probaj se poigrati s ovim.

Hvala, i sam sam počeo eksperimentisati sa navedenim, performanse i nisu tako loše pod uslovom da inline opcija bude isključena (da se dobiju stvarni rezultati poziva).

Ipak, performanse su mnogo lošije dodavanjem parametara tipa "object" (zbog boxing/unboxing overheda), a ipak to je jedini način koji sam ja pronašao da izvršim potiv (i napravim keširanje funkcije) o kojoj u trentku pisanja koda ne znam ništa (niti tipove argumenata, niti izlazni tip podatka).

Performanse dodavanjem "object" parametara su čak 15x lošije u odnosu na poziv klasične funkcije prilikom mog jednostavnog testa (za mjerenje vremena korišten Stopwatch, korištena funckija "Math.Max" sa int32 parametrima - koji maksimiziraju efekat boxing/unboxing-a).

Poruka je uređivana zadnji put pet 26.7.2019 12:54 (Boky Milanovic).
10 godina
offline
C# - Problemi i rješenja

Pozdrav ekipa, treba mi mala pomoc

Napravio sam winform aplikaciju i preko publisha instaliram na racunalu i sve radi normalno

I sad zelim aplikaciju prebaciti na drugo racunalo , al ne zeli da je pokrene, a na racunalu kojem sam radio aplikaciju sve normalno radi. I uz navedeni problem ,kako cu ja namjestit connection string sql servera od drugog racunala ako na njemu nemam visual studio

 
0 0 hvala 0
10 godina
offline
Re: C# - Problemi i rješenja
Arsenalboy kaže...

Pozdrav ekipa, treba mi mala pomoc

Napravio sam winform aplikaciju i preko publisha instaliram na racunalu i sve radi normalno

I sad zelim aplikaciju prebaciti na drugo racunalo , al ne zeli da je pokrene, a na racunalu kojem sam radio aplikaciju sve normalno radi. I uz navedeni problem ,kako cu ja namjestit connection string sql servera od drugog racunala ako na njemu nemam visual studio

 Pa trebao bi na neki način biti u mogućnosti promijeniti takve parametre. Možda preko config file-a?

Nova poruka
E-mail:
Lozinka:
 
vrh stranice