Just nu i M3-nätverket
Gå till innehåll

jerker olofsson

Medlem
  • Antal inlägg

    465
  • Gick med

  • Senaste besök

Om jerker olofsson

  • Medlemstitel
    Aktiv
  • Födelsedag 1980-12-26

Profil

  • Ort
    Malmö
  1. Prova dela med 10.0 istället för 10. Då kommer det att bli en flyttalsdivision istället för en heltalsdivision.
  2. Det enklaste är att binda den till datakällan direkt, även om det går att göra på andra sett: DataGrid dataGrid1 = new DataGrid(); dataGrid1.DataSource = myReader; dataGrid1.DataBind();
  3. Hmm.. När du gör DoDragDrop() så kanske du kan göra mouse capture. När du gör Capture så får den kontrollen alla mouse events, även om musen är utanför kontrollen. http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.capture.aspx
  4. Du kan inte jämföra en char[] (eller char*) med == operatorn. För att jämföra strängar, så måste datorn gå igenom tecken för tecken i strängarna och jämföra dessa ett tecken åt gången. Eftersom "strängar" inte finns i C, utan det bara är pekare (som pekar ut den första byten i strängen, eller det första tecknet) så måste datorn veta att den skall sluta jämföra strängarna. Det gör man genom att minnet innehåller värdet 0. Eftersom datorn måste veta när strängen tar slut används alltid noll. Det byteder att du alltid måste reservera ett tecken extra om någon matar in strängar. svar bör således vara 4 bytes stor om du förutsätter att ingen matar in längre strängar än tre tecken. Din kod innehåller. char svar[3]; Detta kommer att motsvara tre bytes i minnet. Det räcker då till två tecken om du lagrar en sträng. Om du i koden skriver "nej" så kommer kompilatorn att automatiskt allokera en minnesarea på 4 bytes. De tre första bytesen innehåller 'n', 'e', och 'j', eller rättare sagt ASCII värden för dessa bokstäver. Den sista byten innehåller värdet 0 (noll). Låt oss säga att den minnesaddressen som tilldelas till den konstanta strängen är 10. Det byteder att minnet i den dator som exekverar koden är upptaget mellan byte 10 och 13. (Vi bortser från minnesmappningar, MMU, virtuellt minne, minnessidor etc..) Låt oss säga att svar hamnar mellan byte 15 och 17. Minnet ser då ut något sånt här: "nej" Byte10 = 'n' Byte11 = 'e' Byte12 = 'j' Byte13 = 0 svar Byte15 = 'n' Byte16 = 'e' Byte17 = 'j' Byte18 = 0 eller svar Byte15 = 'j' Byte16 = 'a' Byte17 = 0 Byte17 = ? (denna byte i minnet har inte ändrats, utan är vad den var innan). beroende på var användaren matar in för sträng. == operatorn kommer att jämföra de minnesaddresser som strängarna ligger lagrade. "nej" == svar kommer då att jämföra minnesadresserna för de olika strängarna. I exemplet jämför den 10 med 15. Dvs det uttrycket kommer aldrig att vara "sant". En sträng jämförelse skulle kunna se ut så här (men det finns inbyggt i standard biblioteken): char* ptr1 = "nej"; char* ptr2 = svar; int CompareStrings(char* ptr1, char* ptr2) { // Fortsätt tills någon pekar på en nolla while(*ptr1 != 0 && *ptr2 != 0) { // Jämför tecknen med varandra if(*ptr1 != *ptr2) { // De är inte lika. return -1 } // Flytta till nästa byte. ptr1++; ptr2++; } // Kolla så om båda strängarna inte var lika långa if(*ptr1 != 0 || *ptr2 != 0) { return -1; } return 0; } Standard bibliotekets funktion för att jämföra strängar heter strcmp. Den används så här: if(0 == strcmp("nej", svar)) { // Användaren svarade nej } [inlägget ändrat 2006-12-29 20:39:26 av jerker olofsson]
  5. "nej" == svar jämför två pekare. Använd strcmp.
  6. Du kan inte arva från två klasser, jag skulle rekomendera dig att istället skilja på användargränssnitt, dvs knappar, och entiteter som personer etc. Du kan istället göra: public class MyUserControl : UserControl { private Tjej tjej; // ... } Om du skapar klassen Barn, som ärver från Tjej. Så är den också en "Person" eftersom "Tjej" ärver från "Person".
  7. Du kan kompilera C-koden till en DLL och använda [DllImport] attributet.
  8. Precis som redan har skrivits, så är gotoxy() funktionen, samt hela conio.h inte definerad av C-standarden, utan är del av en plattforms/kompilator specifik utbyggnad. Du kan troligtvis lösa problemet med gotoxy på andra sätt, exempelvis genom ANSI Escape Sequences. http://isthe.com/chongo/tech/comp/ansi_escapes.html Där ESC är ASCII 27. Du kan använda printf() för att skriva ut detta. Plattformarna som det här fungerar på är beroende på terminal.
  9. Ett tips är att: 1) Spara alltid datumet som en unsigned long (eller liknande) i Date-klassen oavsett vilka metoder och tolkningar som är i basklasser. eller 2) An abstrakt metod som basklasserna måste implementera som omvandlar den interna representationen till ett som finns i flera. Då räcker det att definera copy-ctor och assignment-operatorn för Date-typen. Dock så måste du definera dessa i alla basklasser. (Om jag kommer ihåg rätt så innefattas inte dessa i arv på samma sett som metoder).
  10. Prova med: cin.get(text, sizeof(text), '\n');
  11. Om det är en konkret fråga du har så är du välkommen att ställa den. Det är nog ingen som är sugen på att lösa dina skoluppgifter. Tänk om vi blir tvugna att arbeta med dig i framtiden?
  12. Teoretiskt sett skulle du kunna serialisera ett interface, om alla data är publik. Men du kan aldrig deserialisera ett interface, eftersom du inte kan skapa instanser av interface. Jag skulle råda dig till att titta på t ex 3-tier design sidor. Tänk dig istället att du har ett data lager som känner till implementationen av interfacet, kan skapa objekt, serialisera, deserialiser. Har du flera olika datakällor så kan du hantera dem genom en facade i datalagret. Datalagret får sedan sortera ut hur objekten skall serialiseras. Sedan har du businessobjekt där du skriver in logiken som arbetar med dataobjekten.
  13. Ser inget konstigt direkt. Inkluderar du player.h i player.c ? Hur defineras structen, och var?
  14. Hej, du ber användaren av din applikation att mata in ett heltal, inte ett tecken. Ändra raden int A; till char A;
  15. ÄR Uint32 typedef för "unsigned int" eller vad är det för typ? Vad händer om du gör thelFile.read(&aUint , 4); ? [inlägget ändrat 2006-07-07 17:43:02 av jerker olofsson]
×
×
  • Skapa nytt...