Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Videoannonse
Annonse

De er relaterte til hverandre ganske direkte. Men de er ganske forskjellige også.

http://www.csharphelp.com/archives/archive138.html

 

Veldig simpel og kort sammenligning av C++ og C#.

C++ er det raskeste språket, men også det vanskligste. Det lar deg gjøre stort sett hva som helst, men krever at du holder styr på minne (som er vanskelig) og det er veldig mye du må gjøre selv (eller finne andre biblioteker*).

C# er mer høynivå, koden blir ikke kompilert til maskinkode, noe som gjør at det er litt tregere enn C++. Det har mange innebygde funksjoner som gjør at det er mye lettere å lage kode uten å gjenoppdage hjulet ett par ganger. Den har også en garbage collector som gjør at du ikke trenger å bry deg med minnehåndtering, som gjør din jobb mye enklere.

 

Hentet fra https://www.diskusjon.no/index.php?showtopic=846241

Endret av double-a
Lenke til kommentar

japp

 

C# kode blir kun kompilert til native code Just-in-time, eller hvis man bruker ngen.exe på programfila (det tvinger .NET til å kompilere programmet til native code en gang for alle, det er vanlig at installasjonsprogrammet gjør dette, fordi det minker loading tiden til et program... selvsagt)

Lenke til kommentar

Den bruker ikke cs.exe, men JIT-compileren, altså den compiler fra CIL (Common Intermediate Language) til native, aner ikke hva programmet heter.

 

Last ned Visual C# Express fra Microsoft, det er gratis, men man må registrere seg (gratis) for å bruke det lengre en 30 dager.

 

Drit i Windows Presentation Foundation i VS2008 foreløpig, det er en ganske fancy men unødvendig sak (alle vinduer blir tegnet med Direct3D, noe som gjør at man kan bruke drop shadow, blur, bevel and emboss realtime på kontrollene, og 3D modeller rett på GUI etc. men det er ganske omfattende og mye å lære seg)

Lenke til kommentar

For å lære har jeg lyst til å lage en trainer til Hellgate: London. Det er så tungt å bruke Tsearch 1.6, når jeg kan skrive et program for jobben.

Den koden som skal lages er altså en headerfil, skrevet i C. Med mulighet for å modifisere minnet via adresser man får oppgir.

Er det noe annet jeg trenger enn read/write processmemory? (XP)

Lenke til kommentar
For å lære har jeg lyst til å lage en trainer til Hellgate: London. Det er så tungt å bruke Tsearch 1.6, når jeg kan skrive et program for jobben.

Den koden som skal lages er altså en headerfil, skrevet i C. Med mulighet for å modifisere minnet via adresser man får oppgir.

Er det noe annet jeg trenger enn read/write processmemory? (XP)

Det finnes ferdige små-koder for å poke minneadresser (av en eller annen grunn bruker man ordet poke). De er gode referanser å se etter. Et kjapt søk så tipper jeg du finner noe.
Lenke til kommentar

Jeg får dette på mange forskjellige kildekode-filer, hva er gale egentlig? Udatert kode?

------ Build started: Project: lolkniz, Configuration: Release Win32 ------

Compiling...

main.cpp

.\main.cpp(32) : error C2664: 'FindWindowW' : cannot convert parameter 2 from 'const char [14]' to 'LPCWSTR'

Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

.\main.cpp(35) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [26]' to 'LPCWSTR'

Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

.\main.cpp(55) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [21]' to 'LPCWSTR'

Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

.\main.cpp(68) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [33]' to 'LPCWSTR'

Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

.\main.cpp(75) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [33]' to 'LPCWSTR'

Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

Build log was saved at "file://c:\Documents and Settings\coderapor\My Documents\Visual Studio 2005\Projects\lolkniz\lolkniz\Release\BuildLog.htm"

lolkniz - 5 error(s), 0 warning(s)

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

 

#include <windows.h>

void main()

 

 

{

HWND hWnd = FindWindow(0, "MSN Messenger"); //** Define the window we are looking for

if(hWnd == NULL) //** If window is not found, Error cannot find window!

{

MessageBox(0, "Error cannot find window!", "Error!", MB_OK + MB_ICONERROR);

}

else

 

{

DWORD proc_id;

//** Declares DWORD proc_id which will later hold

//** the handle for the process ID which we hook

//** the process with

GetWindowThreadProcessId(hWnd, &proc_id);

//** Gets process ID by window caption, stores

//** the recived process id in 'proc_id'

//** which we declared earlier with:

//** 'DWORD proc_id;

HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);

//** Opens the process with

//** by using the stored ID

//** in 'proc_id'

if(!hProcess) //** If cannot 'OpenProcess', then it displays the error message

{

MessageBox(NULL, "Cannot open process!", "Error!", MB_OK + MB_ICONERROR);

}

else

 

{

//** Below; The data to write to the address which we later state

BYTE newdata[]={0x72, 0x65, 0x64, 0x70, 0x6F, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

DWORD newdatasize = sizeof(newdata);

//** Below; We use WriteProcessMemory to our stored process, 'hProcess'

//** and writes 'newdata' to our address '(LPVOID)0x5C6600'

if(WriteProcessMemory(hProcess, (LPVOID)0x5C6600, &newdata, newdatasize, NULL))

{

//** if we write the memory successfully, we let the user know

MessageBox(NULL, "WriteProcessMemory is a success!", "Success!", MB_OK + MB_ICONINFORMATION);

//** Alerts user that it has written

}

else

{

//** if we cant write the memory to our process, we notify

//** the user with the following error message;

MessageBox(NULL, "Error cannot WriteProcessMemory!", "Error!", MB_OK + MB_ICONERROR);

}

//** Closes process after we write the memory,

//** helps stop memory leaks

CloseHandle(hProcess);

}

}

}

Lenke til kommentar
Jeg driver å løser oppgaver i C++ boken, en oppgave skal jeg lage et program som printer ut kvadrater med stjernetegn i terminalen.

Her er koden min; http://www.pastebin.no/2926 føler den er rotete. Er det noen måte å effektivisere arbeidet på? Eller må jeg ha så mange if, og helt ærlig så liker jeg ikke å bruke goto.

 

Når du har mange if som gir samme resultatet så kan du grupere de med || (OR)

eks.

if ((tall == 2) || (tall == 3))

 

På slutten så har du en if som gir et annet resultat, men hvis du bruker else if så slipper du å bruke goto

eks.

if ((tall == 2) || (tall == 3))
{
//kode
}
else if(tall == 4)
{
//kode
}

 

istede for linje = linje -1; så kan du bruke linje--;

 

Når det gjelder while loopene så syntes jeg at du heller burde bruke for looper.

 

Håper det hjelper

 

edit: rettet feil i koden og la til eksta parenteser

Endret av Giddion
Lenke til kommentar

Her er samme kode som din uten goto.

 

 

 

#include <iostream>
using namespace std;

int main() {
int size = 0; 
int linjer = 0; 
int linjen = 0; 
cout << "Enter a number please?\n"; 
cin >> size; 
linjer = size;
linjen = size; 
cout << "Starting drawing...\n";

while (linjer > 0) {
	while (linjen > 0) {
		if (linjer == 1) {
			cout << "*";
		}

		else if (linjer == size) {
			cout << "*";
		}

		else if(linjer > 1 && linjen == 1) {
			cout << "*";
		}

		else if(linjer > 1 && linjen == size) {
			cout << "*";
		}
		else {
			cout << " ";
		}

		linjen = linjen - 1;
	}

	linjen = size;
	linjer = linjer - 1;
	cout << "\n";
}
return 0;
}

 

 

 

Ørjan...

Endret av Orjanp
Lenke til kommentar

Tenkte jeg skulle prøve meg på samme greia bare skrive det på min måte.

 

 

 

#include <iostream>

using namespace std;

int main()
{
int size;
cout << "Enter a number:";
cin >> size;
cout << endl;

// øverste linje kun "*"
for (int i = 1; i <= size; i++)
{
	cout << "*";
}

for (int i = 1; i <= (size - 2); i++)
{
	//ny linje
	cout << endl;

	//første stjera
	cout << "*";

	//mellomrommet
	for (int j = 1; j <= (size -2); j++)
	{
		cout << " ";
	}

	//siste stjerna
	cout << "*";
}

//ny linje
cout << endl;

// nederste linje kun "*"
for (int i = 1; i <= size && size > 1; i++)
{
	cout << "*";
}

cin.ignore();
cin.get();
return 0;
}

 

 

Lenke til kommentar

Jeg tenkte egentlig at jeg skulle ta det som en liten utfordring så "tidlig" på dagen.

Men kan jo si at slik jeg tenkte var at det ikke var nødvendig med if hele veien for å vite om det skulle være mellomrom eller *, og heller lage det slik at den skriver n antall stjerner på første og siste linjen, at den skriver en stjerne på starten og slutten av de andre linjene med n-2 antall mellomrom i mellom.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...