Gå til innhold

RMBB

Medlemmer
  • Innlegg

    765
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av RMBB

  1. Noen som klarer å se hva det feiler denne?

    Mulig årsak kan være for mange gjødsel pinner. Men den har fått ny jord og større potte etter det.

     

    edit:

    Den står ikke i direkte sol. Har flyttet den fra et litt mørkere sted, men ingen forandring da heller.

    post-113680-0-59619700-1421316821_thumb.jpg

  2. Har en .bat fil som inneholder blant annet "monitor=2"

    Dette ønsker jeg å kunne bytte til "monitor=1"

    Jeg bruker regex til å hente ut "monitor=2" og deretter .Replace til å erstatte den. Men det ser ikke ut til å virke. Noen som ser hva jeg gjør galt?

     private void AddMonitor1_Click(object sender, EventArgs e)
    {
                string txtfil = System.IO.File.ReadAllText("C:\\start.bat");
                var match = Regex.Match(txtfil, @"(?:monitor=)\d{1,4}");
                txtfil.Replace(match.ToString(), "monitor=1");
                File.WriteAllText("C:\\start.bat", txtfil);
    }
    
  3.  

    I stedet for regex, hva med IPAddress.TryParse?

     

    Ellers kan du putte ^ og $ inn i pattern:

    ^(((25[0-5])|(2[0-4]\d)|([01]?\d?\d))\.){3}((25[0-5])|(2[0-4]\d)|([01]?\d?\d))$

     

    Ettersom jeg har klart på finne ut så godtar IPAddress.TryParse nesten hva som helst av tall da den bare konverterer det til riktig format. (eks. 1=0.0.0.1) For å unngå feil må jeg forsikre meg om at brukeren har skrevet inn en korrekt ipadresse. Jeg forsøkte med ^$, men ikke hele utrykket. Ser det ut til å virke som det skal nå. Takk!

  4. Jeg bruker koden under til å kontrollere input fra bruker slik at kun gyldige Ipadresser blir godtatt. Dette virker, men hvis jeg f.eks skriver A.10.0.0.1 Blir det også godtatt.

    Jeg ønsker å ha det slik at bare tall og punktum godtas. Dette er nødvendig fordi jeg skal bruke "input" til å definere IPen til en server i en .bat-fil.

    string input = Microsoft.VisualBasic.Interaction.InputBox("Skriv inn ønsket IP-adresse", "Endre IP", "eks: 192.168.1.1", -1, -1);
                var IpMatch = Regex.Match(input, @"(((25[0-5])|(2[0-4]\d)|([01]?\d?\d))\.){3}((25[0-5])|(2[0-4]\d)|([01]?\d?\d))");
                if (IpMatch.Success)
                {
                    MessageBox.Show(input + " Valid");
                }
                else
                {
                    MessageBox.Show(input + " Invalid");
                }
    
  5. Under ligger koden jeg bruker for å lese innholdet i en .bat fil. Hvis jeg fjerner likhetstegnet i LH klarer den å finne ordet, men ikke når likhetstegnet er med.

    Noen som kan hjelpe meg med problemet?

    string LH = "host=localhost";
                    string[] lines = System.IO.File.ReadAllLines("C:\\Program Files\\start.bat");
                    if (lines.Contains(LH))
                    {
                        MessageBox.Show("host er satt til localhost");
                    }
    
  6. Jeg jobber med et program som skal liste forskjellig informasjon, blant annet SQL informasjon.

     

    Jeg bruker denne saken som jeg fant på stackoverflow.

            public void SQLinfob()
            {
                string myServer = Environment.MachineName;
    
                DataTable servers = SqlDataSourceEnumerator.Instance.GetDataSources();
                for (int i = 0; i < servers.Rows.Count; i++)
                {
                    if (myServer == servers.Rows[i]["ServerName"])
                    {
                        if ((servers.Rows[i]["InstanceName"] as string) != null)
                            SQLbox.Items.Add(servers.Rows[i]["ServerName"] + "\\" + servers.Rows[i]["InstanceName"]);
                        else
                            SQLbox.Items.Add(servers.Rows[i]["ServerName"]);
                    }
                }
            } 

    Får ingen feilmeldinger, men heller ingen resultater. Er det feil og bruke public void da denne skal liste til tekstboks? Kjører jeg debug med F11 virker det som om den ikke forsøker å kjøre denne i det hele tatt.

  7. Hvis du feilsøker litt da, f.eks deaktivere alle tilkoblinger utennom lokal tilkobling og ser hva du får ut da.

    Eller skriver om til bare å hente maske fra lokal tilkobling. Se om det hjelper.

     

    Btw, bruk Stack Overflow istedenfor diskusjon.no :)

    Takker for svar.

    Deaktiverte og avinstallerte så jeg bare får opp et kort når jeg kjører ipconfig, men fortsatt samme resultat.

    Ja, må vel kanskje høre på Stack Overflow, men de er ofte så lite hyggelige, så forsøkte her først:)

  8. Okay, men hvis den henter den første burde jeg jo fått opp noe annet.

    her er Ip config. Modded noen tall, da jeg ikke vet hvor populært det er at jeg poster dem her.

    
    Windows IP-konfigurasjon
    
       Vertsnavn   . . . . . . . . . . . : Test
       Prim‘r DNS-suffiks  . . . . . . . : 
       Nodetype  . . . . . . . . . . . . : Hybrid
       IP-ruting aktivert  . . . . . . . : Nei
       WINS Proxy aktivert . . . . . . . : Nei
       S›keliste for DNS-suffiks . . . . : Domene.no
    
    Ethernet-kort Lokal tilkobling:
    
       Tilkoblingsspesifikt DNS-suffiks  : Domene.no
       Beskrivelse   . . . . . . . . . . : Marvell Yukon 88E8057 PCI-E Gigabit Ethernet Controller
       Fysisk adresse  . . . . . . . . . : 00-25-12-8B-60-50
       DHCP aktivert . . . . . . . . . . : Ja
       Automatisk konfigurasjon aktivert : Ja
       Koblingslokal IPv6-adresse. . . . : fec0::bbce:321:b10b:be15%20(Foretrukket) 
       IPv4-adresse. . . . . . . . . . . : 192.168.1.23(Foretrukket) 
       Nettverksmaske . . . . . . . . . .: 255.255.255.0
       Leieavtale inng†tt. . . . . . . . : 10. juli 2014 03:22:07
       Leieavtale utl›per. . . . . . . . : 14. juli 2014 03:22:07
       Standard gateway . . . . . . . . .: 192.168.1.1
       DHCP-server . . . . . . . . . . . : 192.168.1.1
       DHCPv6-IAID . . . . . . . . . . . : 234756513
       DHCPv6 klient-DUID. . . . . . . . : 00-02-00-01-12-C3-B7-7B-00-24-11-8B-60-50
       DNS-servere . . . . . . . . . . . : 151.236.6.156
                                           118.88.20.195
       NetBIOS over Tcpip. . . . . . . . : Aktivert
    
    Tunnelkort isatap.Domene.no:
    
       Medietilstand . . . . . . . . . . : Medium frakoblet
       Tilkoblingsspesifikt DNS-suffiks  : Domene.no
       Beskrivelse   . . . . . . . . . . : Microsoft ISATAP Adapter
       Fysisk adresse  . . . . . . . . . : 00-00-00-00-00-00-00-E0
       DHCP aktivert . . . . . . . . . . : Nei
       Automatisk konfigurasjon aktivert : Ja
    
    Tunnelkort Lokal tilkobling* 9:
    
       Medietilstand . . . . . . . . . . : Medium frakoblet
       Tilkoblingsspesifikt DNS-suffiks  : 
       Beskrivelse   . . . . . . . . . . : Microsoft 6to4 Adapter
       Fysisk adresse  . . . . . . . . . : 00-00-00-00-00-00-00-E0
       DHCP aktivert . . . . . . . . . . : Nei
       Automatisk konfigurasjon aktivert : Ja
    
    
  9. Har funnet denne på et forum og modifisert den litt.

    Koden under skal hente ut nettverksmasken, men når jeg kjører den så henter den ut 255.0.0.0 noe ingen av nettverkskortene mine har. Ser ut som den kjører for alle adapterne og deretter gir meg info fra den siste. Kan det stemme? Noen som kan hjelpe meg med denne?

            public string Subnet()
            {
                string Maske = "";
                foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces())
                    if (f.OperationalStatus == OperationalStatus.Up)
                {
                    IPInterfaceProperties ipInterface = f.GetIPProperties();
                    foreach (UnicastIPAddressInformation unicastAddress in ipInterface.UnicastAddresses)
                    {
                        Maske = (unicastAddress.IPv4Mask == null ? "Nettverksmaske er ikke definert" : unicastAddress.IPv4Mask.ToString());
                    }
                }
                return Maske;
            }
    
  10. Da fikk jeg det til med mutex! Takk for hjelpen! Ga kred til Geir i og med at han var først ute med mutex svaret.

     

    Slik ble det seende ut:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Threading;
    
    namespace Mittprogram
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            static Mutex mx;
            const string singleInstance = @"MU.Mutex";
    
            [STAThread]
            static void Main(string[] args)
            {
                try
                {
                    System.Threading.Mutex.OpenExisting(singleInstance);
                    MessageBox.Show("Dette programmet kjører allerede!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                catch (Exception e)
                {
                    mx = new System.Threading.Mutex(true, singleInstance);
                }
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Main());
            }
        }
    }
    
  11. Det er en vesentlig enklere måte å få dette til med en mutex:

     

    using System;
    using System.Threading;
    using System.Windows.Forms;
    
    namespace SingleInstance
    {
        static class Program
        {
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
    
                var mutex = new Mutex(false, "MyApplication");
    
                if (mutex.WaitOne(0))
                {
                    try
                    {
                        Application.Run(new Form1());
                    }
                    finally
                    {
                        mutex.ReleaseMutex();
                    }
                }
            }
        }
    }
    
    Det er strengt tatt ikke nødvendig med den finally saken.

     

    Ja, har sett på mutex, men skjønner ikke hvordan jeg skal bruke det. Skjønner dog tydeligvis ikke hvordan jeg bruker det jeg allerede har heller:S

  12. Først litt info om hvorfor jeg spør:
    Jeg er helt fersk når det kommer til programmering og har startet med å lage et enkelt program for moro skyld. Jeg har vært gjennom diverse tutoirals på youtube og andre sider, men det blir litt tungt i lengden og bare "lese/se" og ikke teste selv. Derfor har jeg satt i gang med et lite program. Så stopper det opp da jeg tydeligvis ikke har nok forståelse, derfor "jukser" jeg litt og spør om hjelp her.

     

    Jeg har en kode som jeg har funnet som skal hindre programmet mitt i å kjøre flere ganger. Men jeg vet ikke hvordan jeg skal bruke den.

    Her er første del av programmet mitt(Har endret litt på navn):

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Diagnostics;
    
    namespace Hoved
    {
        public partial class Main : Form
        {
            public Main()
            {
                InitializeComponent();
            }
    
            private void Op_Click(object sender, EventArgs e)
            {
                Op O = new Op();
                O.ShowDialog();
                this.Hide();
            }
    
            private void Ro_Click(object sender, EventArgs e)
            {
                Ro R = new Ro();
                R.ShowDialog();
                this.Hide();
            }
    
            private void Quit_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
    
        }
    }
    

    Dette er koden jeg vil bruke for å kontrollere om programmet allerede kjører:

    public bool IsProcessOpen(string name = "Hoved")
            {
                foreach (Process clsProcess in Process.GetProcesses())
                {
                    if (clsProcess.ProcessName.Contains(name))
                    {
                        return true;
                    }
                }
                return false;
            }
    

    Men jeg vet ikke hvordan jeg skal bruke true or false her. Forsøkte å lage en if statement men da fikk jeg beskjed om at IsProcessOpen er en "Method Group"
    Forsøkte dette:

    public void Feilmelding()
            {
                if (IsProcessOpen = true)
                {
                     MessageBox.Show("Dette programmet er allerede startet!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
    

    Noen som kan hjelpe meg?

     

    edit: Lagt til C# i Tittel

×
×
  • Opprett ny...