dellevela>> Det er en lotto kupon tjekker.. hvis du har købt en lotto kupon i butikken taster du bare nummerene ind og så tjekker den.. Det er sku ikke et program hvor man kan vinde noget!
westhi> hmm.. det sker ikke ved mig.. men ser lige om der er noget galt.. tak for det
>>armena Det fungerer jo sådan set meget godt... Det største problem jeg ser med det er at det tager ufattelig lang tid at taste tallene ind... 10 rækker med 7 tal i hver taler lidt for sig selv... :/
En gem-funktion ville også være godt! Det er forresten også pisseirriterende at skulle skrive 0 foran tal mellem 1 og 9, få den til at gøre det automatisk...
Samtidig tror jeg fint at du ville kunne spare noget på programmets størrelse hvis du i stedet oprettede dine mange edits dynamisk, eller det gør du måske allerede?!
Når du så tjekker dine tal, så kommer der en Gauge frem... Hvorfor kommer den, for syns skyld? Forhåbentlig ikke! :)
Desuden tror jeg også at lotto-folket hellere vil side bag deres fjernsyn med en kupon i hånden frem for at taste alle tingene ind på en computer... ;)
hermandsen>> mange tak for dit svar! :D Jeg skal nok få lavet det med at den selv sætter et 0 foran og at man kan gemme rækkerne hvis nu man spillede de samme rækker hver gang. Og det med gauge, ja, det er sku også meget dumt .. fjerner den!.. :) Men hvad mente du med det her: ..."hvis du i stedet oprettede dine mange edits dynamisk, eller det gør du måske allerede?!" ??
Ellers mange tak for dit svar.. kunne godt bruge det
Det jeg mener er: Har du hevet hver edit ud på formen, givet den et navn og lavet dens OnChange event? Hvis du har kan du nemlig spare en deeeel kode!!! :)
det med edit.. desvære nej :( havde ikke tænkt på det, men TAK! :D
Og det med at den selv henter ugens vinder-tal... ja.. Det er jo lidt af en hemmelighed :D jeg brugte et par uger på at få det til at hente fra www.tips.dk.. har også spurgt dem om de kunne lave en side der hed: www.tips.dk/lotto.html for mig/mit program.. men svaret var nej.. så jeg blev nød til at bruge længere tid på det.
Nå, men hvis du vil lave det om så kan du gøre følgende:
public Edits: array [1..10, 1..7] of TEdit; procedure EditExit(Sender: TObject);
procedure TFormLotto.EditExit(Sender: TObject); begin if Length((Sender as TEdit).Text) = 1 then (Sender as TEdit).Text := '0' + (Sender as TEdit).Text; end;
procedure TFormLotto.FormCreate(Sender: TObject); var Row, Col: Integer; begin for Row := 1 to 10 do for Col := 1 to 7 do begin Edits[Row, Col] := TEdit.Create(Self); Edits[Row, Col].Parent := Self; Edits[Row, Col].Top := Row * 20 + 10; Edits[Row, Col].Left := Col * 30 + 20; Edits[Row, Col].OnExit := EditExit; //Så kan du ellers selv sætte properties end; end;
Når du så skal gemme indholdet af dine Edits så gør du følgende:
procedure TFormLotto.FormClose(Sender: TObject); var Row, Col: Integer; sl: TStringList; S: String; begin sl := TStringList.Create; for Row := 1 to 10 do begin S := ''; for Col := 1 to 7 do begin S := S + Edits[Row, Col].Text; Edits[Row, Col].Free; end; sl.Add(S); end; sl.SaveToFile(ExtractFilePath(Application.ExeName) + 'lottotal.txt'); sl.Free; end;
Når du så skal åbne din fil i Editsne er det egentlig bare at gå den anden vej... ;)
Ikke rigtig noget... Bare lave det om til TFlatEdit i stedet for TEdit...
At åbne den:
procedure TFormLotto.OpenNumbers; var sl: TStringList; Row, Col: Integer; S: String; begin S := ExtractFilePath(Application.ExeName) + 'lottotal.txt'; if not FileExists(S) then Exit; sl.LoadFromFile(S); for Row := 1 to 10 do begin S := sl.Strings[Row]; for Col := 1 to 7 do Edits[Row, Col].Text := Copy(S, Col*2-2, 2); end; sl.Free; end;
Så kører du bare OpenNumbers efter for-løkkerne i FormCreate! ;)
procedure TFormLotto.FormCreate(Sender: TObject); var Row, Col: Integer; begin for Row := 1 to 10 do for Col := 1 to 7 do begin Edits[Row, Col] := TEdit.Create(Self); Edits[Row, Col].Parent := Self; Edits[Row, Col].Top := Row * 20 + 10; Edits[Row, Col].Left := Col * 30 + 20; Edits[Row, Col].OnExit := EditExit; //Så kan du ellers selv sætte properties end; OpenNumbers; //Her! end;
Jeg kan scanne sådan en lotto kupon, farve felter, tælle vindertal/tillægstag. Og skrive hele lordet på skærmen. Det tager 0.0038 sekund. Hvad bruger du så lang tid på ?
Ikke for at kritisere, men jeg har INGEN optimeringe lavet.
Jeg skal lige lave en funktion der kan regne gevinsten ud så skal jeg nok offenliggøre source koden.
Og nej mit er ikke bare nær så pænt som dit. Mit program er faktisk grimt :-)
>>Jens Jeg ser frem til det, du må godt sende mig det når du er færdig, men du lægger det måske bare op på hjemmersiden?! :)
Hvis jeg nu fremlægger mit næste store projekt (som næsten er færdigt, med undtagelse af lidt problemer med nogle Threads), laver du så ikke også lige noget lignende på en timestid! :)
Forresten, så må et program godt være grimt, bare det virker! Hvis det så samtidig har en anelse brugervenlighed, så det ikke kun er programmøren der kan bruge det, så må det da være et plus! ;)
Da du skrev at du kunne scanne sådan en lotto-kupon, så troede jeg du mente at du lagde en lotto-kupon i din scanner, fik et billede ind fra den og så analyserede programmet ellers billedet for lotto-tal! Er du vild, jeg tror der skal bruges mange heste hvis det skal realiseres!!! ;)
Nå, jeg hopper tilbage til mit thread-problem... Hvis det går helt i ged, så ender det jo nok med endnu et spørgsmål på Eksperten! :)
Du må hygge dig og sove godt når du en gang når der til! ;)
>>armena Random = tilfældig, altså den tager nogle tilfældige tal ind for at vise at den rent faktisk fungerer... Så slipper man for at sidde og taste en hulens masse tal ind, hvis man bare vil se programmet i funktion! :)
Hvad er det ellers for nogle fejl den melder? Jeg kender ikke lige TFlatEdit-komponenten, men jeg formoder da at den ikke er meget forskellig fra TEdit-komponenten...
Løsningen hedder flere heste, endnu flere heste, og når så din kode er ved at være fuld af heste, så tilføjer du bare flere, indtil dit program hedder Hest!
while Application.ExeName <> 'Hest' do begin Writeln(HesteFil, 'Hest'); end;
Få dig en god bog, jeg kan anbefale Delphi 4 Programmering af Per Amdal Steffensen... Den starter hårdt ud, og du ser hele tiden at der sker noget på skærmen, hvilket kan være en fordel, hvis man er utålmodig! Hop ned på biblioteket og lån den, eller køb den i forretningerne (den koster vist omkring 500 kr)...
du har iøvrigt en kæpme bug, to faktisk, tre faktisk.
1) De tal man skriver kan ikke se. Sort på sort :-) 2) Hvis du fylder ud med 1-2-3-4-5-6-7 Får man 5 rigtige. 3) Dine problemer med at der skal stå 02 og ikke bare 2 skyldes at du gemmer dine vinder tal som strenge 4) Dit program markerer ikke tillægs tal op med en anden farve 5) Dit program beregner ikke en eventuel gevinst.
borrisholt> det med sort felt sker ikke ved mig.. hm.. hvad er galt?? og hvordan kan jeg regne gevinst ud?? har kigget på din men fattede ikke så meget.
jeg har 3 units.. og der er meget i unit 1 fordi at jeg skulle lave det med at den selv springer over til næste felt ved de 70 editer og at når man trykker på ny så sletter det alt i de 70 editer... hehe..
JB -> Prøv at køre lidt rundt med piletasterne mens du holder controltasten nede, jeg tror du hurtigt vil opdage et par fejl, de er MEGET nemme at rette.
Armena -> I stedet for at bruge 64 Labels og en stor portion FlatEdits på din Form1, så gør som Jens Borrisholt og opret dem i Form1.OnCreate. Ikke nok med at dit program kommer til at fylde mindre, du får også et bedre overblik, og hvis noget skal ændres skal det kun gøres et sted.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.