Inlägg

Inlägg som Dalslandan har skrivit i forumet
Av Dalslandan

@Dalslandan: Svarar min egen fråga.

Hade svårt att hitta information först, men hittade ett bra svar här:
StackOverflow: Why does using the wrong calling convention sometimes work?

I mitt exempel tror callee att caller rensar stacken, och caller tror att callee rensar stacken. (Ingen rensar stacken)
Men som sagt, skrämmande är om man inte är i debug och använder argument kan funktionen verka som den fungerar. Vilket resulterar i att man får ett undefined behavior (äter stack space). Eller som I exemplet ovan, där jag använder fel CCs, men det fungerar eftersom jag inte använder några argument in. (Därav, det finns inget som behövs plockas av stacken.)

Sammanfattningsvis från StackOverflow:

It's all very much Undefined Behavior. And one property of Undefined Behavior is that it can do anything, including apparently working…

Eftersom jag inte är bra på assembly ville jag dubbel kolla att just __cdecl och __stdcall inte hade något med return värdet att göra. Vilket med efterforskning det inte har att göra (skillnaden mellan __cdecl och __stdcall ändrar inte hur return värdet hanteras utan endast dess argument till funktionen).

Av Dalslandan

Calling conventions C++, C, C#

Eftermiddagen.

Undersökte lite närmare på ämnet då jag testade skapa DLL filer. (C++ dll till C# program)

Om man mot förmodan skulle ha fel calling convention, kan man ha dolda fel som inte syns (fast programmet fungerar felfritt)?

Testade och kunde köra denna kod felfritt:

C++ kod för DLL (__cdecl) är standard

#define DLL_EXPORT __declspec(dllexport) extern "C" { DLL_EXPORT int counter(int random) { static int total = 0; total++; return total; }

C# kod för .exe (__stdcall) är standard med DllImport

... [DllImport("training.dll")] public static extern int counter(int random); ... counter(); // Vanligt "call" till funktionen

Men om jag skulle lägga till ett argument, så får jag ett fint debug meddelande i Visual Studio (... unbalanced the stack)

Mitt dilemma är:
Om jag har fel CCs utav misstag och programmet aldrig skulle crasha utav det, kommer programmet fungera som det skall ändå tillsvidare utan något "läckage" av något slag? (T.ex. som vid exemplet ovan)

Av Dalslandan

SweClockers har verkligen blivit "super charged" efter flytten. Detta ser ut att bli väldigt bra.
Jag trodde faktiskt redan innan informationen om flytten att SC hostades i någon av Bahnhofs serverhallar.

Av Dalslandan
Skrivet av fluffycrystal:

@Dalslandan: Ohh tack! Men fattar du vad man ska göra på calc_total_age?
alltså denna kommentaren läraren har skrivit i kodningen

//Beräkna den totala åldern.

Som jag förstått är det den sammanlagda åldern man är ute efter.
Lite konstig funktion enligt mig. Men här är ett exempel:

private void calc_total_age() { int simon = 18; // Passagerare 1 int robert = 22; // Passagerare 2 int totala_åldern = simon + robert; Console.WriteLine("Totala åldern är " + totala_åldern + " år"); }

Försök att lek runt så mycket som möjligt. Om du har svårt att förstå variabel scope, for loopar, osv. Mycket information finns på nätet.

Beroende om du vill läsa eller kolla video är individuellt. Men båda sätten finns, och sen att använda det praktiskt och med återupprepning sätter det i minnet.

Försök och att kolla felmeddelanden när det inte fungerar när du kompilerar, ofta så hintar det att det är någon rad som inte "fungerar som den ska". Alltid värt att kolla, även om man inte riktigt förstår vad som sägs.

Av Dalslandan

Har uppdaterat ditt program. Snälla ta dig tid att läsa kommentarerna!
Det viktigt att du förstår varför det fungerar.

Om jag hade valt hade jag inte skrivit det på detta sättet, utan jag hade använt en container som t.ex list eller någon struct.

Det jag har gjort är att löst din add_passenger() funktion. Samt att jag uppdaterat lite variabel namn bättre.
Något jag inte gillar dock är att blanda svenska och engelska i variabel namn.

using System; namespace Bussen { class Buss { const int BUSS_PLATSER = 25; // Maximalt platser i bussen public int passagerare = 0; // Nuvarande passagerare i bussen public int[] passagerare_age = new int[BUSS_PLATSER]; // Array för alla passagerares ålder public void Run() { int menu = 0; do { Console.WriteLine("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"); Console.WriteLine("Välkommen! Välj ett alternativ"); Console.WriteLine("1. Lägg till passagerare"); Console.WriteLine("2. Få reda på passagerarnas ålder"); Console.WriteLine("3. Passagerarnas ålder sammalags"); Console.WriteLine("4. Avsluta program"); Console.WriteLine("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"); Console.Write("Input: "); menu = int.Parse(Console.ReadLine()); switch (menu) { case 1: add_passenger(); break; case 2: print_buss(); break; case 3: calc_total_age(); break; case 4: Console.WriteLine("Programmet avslutas"); break; default: Console.WriteLine("Fel inmatat. skriv in en siffra mellan 1-4"); break; } } while (menu != 0); } public void add_passenger() { Console.Write("Hur många passagerare vill du lägga till: "); string answer = Console.ReadLine(); // Nya passagerare i funktionen int nya_passagerare = Convert.ToInt32(answer); // Kolla så att nya och gammla passagerare får plats i bussen if ((passagerare + nya_passagerare) > BUSS_PLATSER) { Console.WriteLine("Du kan inte lägga till så många passagerare!"); return; // Avsluta funktionen i förväg } // Alla får plats i bussen som vi lägger till dom till klassens variabel passagerare = passagerare + nya_passagerare; // Iterera antalet nya passagerare for (int y = 0; y < nya_passagerare; y++) { // Iterera arrayen passagerare_age for (int i = 0; i < passagerare_age.Length; i++) { // Eftersom vi använder en array, så sparar vi platsen i arrayen där åldern är 0 // Varför? Eftersom default value är 0, som då vet vi att man inte överskriver tidigare värde. if (passagerare_age[i] == 0) { Console.Write("Ange passagerar " + (y + 1) + " s ålder: "); answer = Console.ReadLine(); passagerare_age[i] = Convert.ToInt32(answer); break; // Avluta pågående for-loop } } } } public void print_buss() { // Foreach loopen itererar alla värden i arrayen "passagerare" och sparar värdet i locala variabeln "plats" för varje iteration. foreach (int plats in passagerare_age) { Console.WriteLine(plats); } } private void calc_total_age() { //Beräkna den totala åldern. //För att koden ska fungera att köra så måste denna metod justeras, alternativt att man temporärt sätter metoden med void } } class Program { public static void Main(string[] args) { //Skapar ett objekt av klassen Buss som heter minbuss //Denna del av koden kan upplevas väldigt förvirrande. Men i sådana fall är det bara att "skriva av". var minbuss = new Buss(); minbuss.Run(); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }

Av Dalslandan

Vill inte skriva hela svaret.

Har kompilerat ditt program utan några felmeddelanden.

Är lite osäker på vad du vill åstadkomma i vissa funktioner.

#1
Du hade ett fel i print_buss funktionen. Underlättade den och skrev en kommentar hur den fungerar.

public void print_buss() { // Foreach loopen itererar alla värden i arrayen "passagerare" och sparar värdet i locala variabeln "plats" för varje iteration. foreach (int plats in passagerare) { Console.WriteLine(plats); } }

#2
Du hade även ett fel med functionen calc_total_age() som ändra till void tillfälligt.

private void calc_total_age() { //Beräkna den totala åldern. //För att koden ska fungera att köra så måste denna metod justeras, alternativt att man temporärt sätter metoden med void }

#3
Namngivning på variabler underlättar. Använd ett bra namn som representerar det du använder den till. T.ex.

int[] passagerare_age = new int[25]; // Array för passagerarnas ålder const int BUSS_PLATSER = 25; // Maximalt antal platser i bussen (konstant variabel som oftast skrivs med stora bokstäver)

Av Dalslandan

Thrustmaster Hotas Warthog

Endast använd 1 gång.

Planen var att bygga en "flight chair", men ser ut att bli längre fram i framtiden.

Joysticken är i absolut nyskick, och har legat i sin original förpackning efter första provflygningen.

Angående garanti är jag osäker då jag inte hittar någon information.
Joysticken är inköpt 2018-01-27.

Kvitto kan skickas med om så önskas.
Kan skickas genom hela Sverige för 150:-

3000:- eller så får den ligga kvar.
Har möjlighet till Swish eller Swedbank.

* Har sålt flera föremål på SC, fler än vad som finns i min marknadsprofil.

Läs hela annonsen här

Av Dalslandan
Skrivet av Samlooh:

Varför skulle detta kort ha stresstestats mer från fabrik?

ASUS tests each of these cards with a 144-hour burn-in, and rates them to be "15x more durable than industry standards."

Source: https://www.techpowerup.com/239340/asus-intros-geforce-gtx-10...

Skrivet av Omnomnem:

@Dalsandan: Tack för tipset! 1070ti verkar som ett bra kort men funderar på om det är någon mer större skillnad jämfört med 2060.

Om du vill ha den senaste tekniken från Nvidia är RTX 2060 att rekommendera framför t.ex. GTX 1070 Ti.

Av Dalslandan

Uppgraderade själv nyligen, och bryr mig inte särskilt mycket om "ray tracing". (Blir nog säkert bättre i framtiden)

Samt så som jag förstått det har RTX korten haft en hel del problem också.

Införskaffade mig ett ASUS GTX 1070 Ti (Cerberus). Detta kortet har stresstestats mera från fabrik, vilket är en fördel.
Kortet är förövrigt väldigt grymt, och enligt mig prisvärt om man inte är intresserad av t.ex. gay tracing...

Elgiganten ASUS GTX 1070Ti Cerberus

Av Dalslandan

@Sinery: Gissar mod menu och bots är väl en bot* helt enkelt.

* En bot kan användas till att styra ett spel helt eller delvis.

Av Dalslandan

Sveriges framtid?

Ta inte detta personligen, men tyvärr finns viss sanning.

Tyckte det var en utmärkt representation av ämnet.

Enjoy!

Av Dalslandan

En relativt ny Audi A6 Allroad eller Audi S6 (beroende på väglag), maximalt 3 år gammal.

Fullutrustad såklart

Av Dalslandan
Skrivet av 220volt:

Du bör nog egentligen ändra ljusstyrka och kontrast direkt i skärmens OSD istället för via Nvidias kontrollpanel.

Skickades från m.sweclockers.com

Jo, gillar inte själv att ändra rakt i Nvidia inställningarna på detta sättet.
Tyvärr om jag ändrar i skärmen så ändras inget. Men skall tänka på detta om något blir fel i framtiden.

Av Dalslandan
Skrivet av Laxpudding:

@Dalslandan: Är det inte bara att du behöver sänka ljusstyrkan på belysningen, dvs Brightness?

Annars kan det vara en enkel vanesak. Så länge du har tillräcklig täckning hela vägen från svart till vitt är det rätt. Men har du stirrat och vant dig efter många timmar på en bild som är helt fel kommer även den rätta inställningen inledningsvis upplevas som underlig.

Absolut. Har suttit och stirrat på dessa inställningar i drygt 1 år.

Jag löste den ljusa delen i Windows via Nvidias inställningar "Justera skrivbordets färginställningar" där det blev för min del sänkt Ljusstyrka 8% och höjd Kontrast 10%. Nu tycker jag allt ser bra ut.

Personligen så är allt mycket gråare (såklart vad annars :3), måste faktiskt säga att mycket såg bättre och stilrenare ut med bara vitt.

Tack för all hjälp!

#BackToGray

Av Dalslandan

@Laxpudding: Bilden känns överexponerad med vitt ljus.

Kontrast, gamma eller ljusstyrka verkar inte spela någon roll. Misstänker om det är någon inbyggd Windows inställning.
Vet att i färginställningarna i kontrollpanelen finns en profil installerad för min specifika skärm.

Av Dalslandan

@Laxpudding: Tack. Problemet låg i att skärmens inställningar var RGB 16-235 medan Nvidia inställningarna var inställda på RBG 0-255.

Dock så har allt i Windows nu som en vit transparent nyans.
Bilder ser dock väldigt bra ut, med en ännu djupare färgnivå än innan.

Har försökt ändra inställningarna i bildskärmen, men inget verkar avlösa problemet.

Av Dalslandan

Vissa färger finns inte (BenQ XR3501)

Eftermiddagen.

Har under en längre period grunnat över hur man kan ändra inställningarna som man ser alla "normala" färger enligt dagens standard.

Jag vet att jag har köpt en skärm lämpad för hög HZ, men använder inte det, utan kör normala 60 Hz.

När jag ändrat inställningar förut så vet jag att effekten kan ofta resultera i ett "rosa" överdrag, vilket är extremt tråkigt.

Nuvarande kör jag på en mera naturlig blåaktig bildinställning, vilket enligt mig liknar färgerna på det bästa och behagligaste sättet.

Eftersom jag är väldigt nybörjare på bildskärmar, så undrar jag om detta går att ändra till något bättre i någon inställning.
Eller om jag är fullständigt körd p.g.a. jag har helt fel bildskärm?

Saker som jag vet att det inte är fel på är t.ex. kabeln, då jag tidigare haft den till min tidigare BenQ skärm vilket visat alla färger riktigt.
Har försökt ändrat lite inställningar innan, men har inte sett någon förbättring.

Tog ett kort med telefonen på en sida, och ser ut följande:

https://i.imgur.com/Dmndr9A.jpg

Besökte denna sidan, (vilket ser helt annorlunda ut i en "korrekt" inställd bildskärm): https://insight.joulecoin.info/address/JWK8Z7XfXPrytb2rWRTQP7...

Detta är skärmen jag använder (Inet - BenQ XR3501)

Det syns väldigt dåligt på bilden, men fenomenet som jag märkt är att vissa färger inte existerar (t.ex. den gråa bakgrunden existerar inte). Samt att färgerna är något ljusare än de skall vara.

Tack till dem som orkade läsa igenom.

Uppdatering:
Hur jag kan säkerställa att det inte är fel på något annat, är att jag helt enkelt kan dra över webbläsaren till min sekundära skärm där det som saknas finns. Denna skärmen finns specificerad nedan, och är många år äldre.

Av Dalslandan

Har kört i över 5 år och har en ny i reserv. Hur de ens kunde sluta med den designen är helt galet.

Av Dalslandan
Skrivet av Nepo:

Vad står det i kontraktet?

Ska kolla när jag kan. Men vet att jag kollade förut och det finns ingen specificerad tid.

Skrivet av mattoys:

Menar du att hyresvärde skall ta kostnaden för en tom lägenhet för att du inte vet vad du vill?

På många(flesta) ställena i Sverige så får man vara glad om man lyckas få en lägenhet.

Fair enough.

Skrivet av MacAllan:

Om där inte är några dolda fel eller andra olägenheter som hyresvärden varit skyldig att informera om så har du inget val annat än att betala.

Det finns vissa brister i lägenheten som inte uppenbaras förrän man sover. Men får skylla mig lite själv. Känner inte att jag vill göra någon stor sak av det hela som kommer betala och that is it.

Av Dalslandan

Säga upp lägenhet i förtid?

Hej. Har skaffat ett boende och efter ett par dagar har jag ångrat mig. Hyresvärden vill att jag skall betala 3 månader som uppsägningstiden är, eller tills en ny boende kommer in tidigare. Eftersom det gått mindre än 1 vecka sedan kontraktet är skrivet, har jag något jag kan stödja mig emot? Som sagt, man kan ju onekligen veta hur boendet är innan man varit bosatt där i minst ett par dagar.

Tack på förhand.