Permalänk
Medlem

Hjälp med enkel C#

Skulle behöva hjälp med en mycket enkel C# sats som jag, eftersom jag är total amatör, inte förstår hur jag ska få ordning på.

Den skall: Om klockan är 09 och värdet i clipboard är 109 behålla värdet 109. Om värdet är något annat så skall clipboard-värdet sättas till 09.
Helt enkelt om värdet är klockslag+100 så skall det förbli samma, annars ska det uppdateras med den nya timmen.

Mitt blygsamma försök ser ut såhär, men jag lyckas uppenbarligen inte få till det. Skulle tro att det är hämtadet av tid inne i if-satsen som bråkar, alltså "System.DateTime(Hour.ToString("HH"))" men är inte säker. Skulle uppskatta att få lite hjälp med det.

public class Program { public static void Main() { System.DateTime Hour = System.DateTime.Now; if (System.Windows.Forms.Clipboard.GetText() = 100 + System.DateTime(Hour.ToString("HH"))) System.Windows.Forms.Clipboard.SetText(1+Hour.ToString("HH")); else System.Windows.Forms.Clipboard.SetText(Hour.ToString("HH")); } }

Permalänk
Medlem

100 + System.DateTime(Hour.ToString("HH"))

Här kommer värdet att bli en siffra plus en sträng, vilket inte riktigt blir rätt. Det kommer då sannolikt bli 10009 när klockanb är 09:00.

Testa att skriva "1" + System.DateTime(Hour.ToString("HH")) istället.
Jag är inte säker på att det fungerar. Men det är värt att testa.

Ett förslag när du felsöker är att antingen använda debuggern eller att använda Console.WriteLine() för att se vad olika variabler har för värde. Då kan du lättare hitta vad som är fel.

Permalänk
Hedersmedlem
Skrivet av maxamaxa:

Skulle behöva hjälp med en mycket enkel C# sats som jag, eftersom jag är total amatör, inte förstår hur jag ska få ordning på.

Den skall: Om klockan är 09 och värdet i clipboard är 109 behålla värdet 109. Om värdet är något annat så skall clipboard-värdet sättas till 09.
Helt enkelt om värdet är klockslag+100 så skall det förbli samma, annars ska det uppdateras med den nya timmen.

Mitt blygsamma försök ser ut såhär, men jag lyckas uppenbarligen inte få till det. Skulle tro att det är hämtadet av tid inne i if-satsen som bråkar, alltså "System.DateTime(Hour.ToString("HH"))" men är inte säker. Skulle uppskatta att få lite hjälp med det.

Kan du vara mer specifik med vad det är för fel du ser?

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av giplet:

Kan du vara mer specifik med vad det är för fel du ser?

Den säger "Line 8: System.DateTime är en typ som är ogiltig i angiven kontext"
Rad 8 är raden som börjar på "(System"

Permalänk
Medlem
Skrivet av maxamaxa:

Den säger "Line 8: System.DateTime är en typ som är ogiltig i angiven kontext"
Rad 8 är raden som börjar på "(System"

Använd dubbla =, d.v.s == för jämförelse. Ett = betyder assignment - eller tilldelning. Det är som att du försöker tilldela System.DateTime ett värde, istället för att jämföra med ett annat.

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB
LG C2 42" 4K@120Hz AOC Q27G2U 1440P@144Hz

Permalänk
Medlem
Skrivet av maxamaxa:

Den säger "Line 8: System.DateTime är en typ som är ogiltig i angiven kontext"
Rad 8 är raden som börjar på "(System"

Dels gör du en tilldelning (=) istället för en jämförelse (==), vilket inte är korrekt. Sedan tror jag heller inte att det är möjligt att summera en integer med en DateTime, utan du behöver först konvertera till en integer.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Medlem

Tack för den vänliga hjälpen! Behöver testa lite men tror att det fungerar nu med er hjälp.
Det enda jag är orolig för är om 09 kommer räknas med inledande nolla men det märks imorgon

public class Program { public static void Main() { System.DateTime Hour = System.DateTime.Now; int hours = System.DateTime.Now.Hour; if (System.Windows.Forms.Clipboard.GetText() == "1" + hours) System.Windows.Forms.Clipboard.SetText(1+Hour.ToString("HH")); else System.Windows.Forms.Clipboard.SetText(Hour.ToString("HH")); } }

Permalänk
Medlem
Skrivet av maxamaxa:

Tack för den vänliga hjälpen! Behöver testa lite men tror att det fungerar nu med er hjälp.
Det enda jag är orolig för är om 09 kommer räknas med inledande nolla men det märks imorgon

public class Program { public static void Main() { System.DateTime Hour = System.DateTime.Now; int hours = System.DateTime.Now.Hour; if (System.Windows.Forms.Clipboard.GetText() == "1" + hours) System.Windows.Forms.Clipboard.SetText(1+Hour.ToString("HH")); else System.Windows.Forms.Clipboard.SetText(Hour.ToString("HH")); } }

En hint: integers kan aldrig börja med "0" förutom om det är just 0 som ska representeras, så hours kan aldrig bli "09" som det är just nu.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Hedersmedlem
Skrivet av maxamaxa:

Tack för den vänliga hjälpen! Behöver testa lite men tror att det fungerar nu med er hjälp.
Det enda jag är orolig för är om 09 kommer räknas med inledande nolla men det märks imorgon

public class Program { public static void Main() { System.DateTime Hour = System.DateTime.Now; int hours = System.DateTime.Now.Hour; if (System.Windows.Forms.Clipboard.GetText() == "1" + hours) System.Windows.Forms.Clipboard.SetText(1+Hour.ToString("HH")); else System.Windows.Forms.Clipboard.SetText(Hour.ToString("HH")); } }

Nu gjorde du två förändringar som tog ut varandra. Du ändrade 100 som var ett tal till en sträng och ändrade därmed den till "1". Sedan gjorde du om timmarna till ett tal. Jag skulle rekommendera dig att bara ha strängar eller bara tal när du försöker lägga ihop dem. Det blir mycket mer förutsägbart då.

Sedan har du två representationer för den nuvarande timman. Det räcker med en. Det gör det också enklare att felsöka. Variabeln Hour är just nu nuvarande tid och inte bara nuvarande timma.

Visa signatur

Använd gilla för att markera nyttiga inlägg!