Autor |
Beitrag |
xan553
      
Beiträge: 67
|
Verfasst: Do 01.02.07 17:24
hy,
ich habe mir das tut durchgelesen und auch kapiert ^^ keine angst
nun zum thema, ich möchte gerne ein programm schreiben bei dem ich ein paar editfelder habe in die ich etwas eingebe.
wenn ich auf einen button klicke, sonn es die eingaben der editfelder in beliebiger reienfolge in laybels ausgeben
kann ich dies mit "random" bewerkstelligen?
bitte um denkanstoss
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 01.02.07 17:36
Moin!
xan553 hat folgendes geschrieben: | ich möchte gerne ein programm schreiben bei dem ich ein paar editfelder habe in die ich etwas eingebe.
wenn ich auf einen button klicke, sonn es die eingaben der editfelder in beliebiger reienfolge in laybels ausgeben
kann ich dies mit "random" bewerkstelligen? |
Ja.
xan553 hat folgendes geschrieben: | bitte um denkanstoss |
Worüber willst du denn nachdenken?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
xan553 
      
Beiträge: 67
|
Verfasst: Do 01.02.07 17:38
über gott und die welt natürlich
und darüber wie ich es mit ramdom bewerkständigen könnte
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 01.02.07 17:48
Moin!
Schau dir mal FINDCOMPONENT an, damit solltest du weiter kommen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 01.02.07 17:59
Zuletzt bearbeitet von Blackheart666 am Do 01.02.07 20:01, insgesamt 1-mal bearbeitet
|
|
xan553 
      
Beiträge: 67
|
Verfasst: Do 01.02.07 18:30
ah ok, mit diesem quelltext habe ich mich jetzt auseinandergesetzt,
aber ein prob hab ich noch, ich würde geren verhindern das mir eines meiner labels nichts anzeigt und das mir mehrere labels das selbe anzeigen würde ich auch gerne verhindern
|
|
Renegade
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: Do 01.02.07 18:39
Beispiel:
Du gehst die Edits von a nach z in einer Schleife durch.
Bei jedem Edit ermittelst du per Zufall ein Label
Dann prüfst du ob im Label schon was steht - wenn nein - Label.Caption:=Edit.text
ansonsten neues Label per Zufall ermitteln lassen.
Wenn in den Labels Grundsätzlich schon was steht kann man mit dem Tag-Attribut nochwas anderes in gleicher Art und Weise basteln.
Und ja ich habe ganz bewusst kein Codebeispiel hier gepostet - sollst ja ein bischen dabei lernen.
PS: (Diese Lösung ist nicht ganz fein - sollte aber funktionieren)
PPS: (Diese Lösung ist eigentlich *mist*e - macht aber das was du willst)
PPPS: Wäre schön wenn du selbst rausbekommst wa an dieser Lösung mieß ist!
_________________ Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
xan553 
      
Beiträge: 67
|
Verfasst: Do 01.02.07 18:53
was daran mieß sein könnte:
ich muss für jedes label eine neue integervariable deklarieren
und wenn ich den code nicht bearbeite, erscheint das ergebniss in der titelleiste des programms
ps habs noch nicht rausbekommen ^^
|
|
Renegade
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: Do 01.02.07 18:55
xan553 hat folgendes geschrieben: |
ich muss für jedes label eine neue integervariable deklarieren |
Wie kommst du darauf?
xan553 hat folgendes geschrieben: |
ps habs noch nicht rausbekommen ^^ |
Dann würde ich meinen Vorschlag erstmal testen!
_________________ Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
xan553 
      
Beiträge: 67
|
Verfasst: Do 01.02.07 19:13
Renegade hat folgendes geschrieben: | xan553 hat folgendes geschrieben: |
ich muss für jedes label eine neue integervariable deklarieren |
Wie kommst du darauf? |
wenn ich diesen code benutze:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var Edit:Array[1..4]of TEdit; i:Integer; begin i:=Random(10)+1; label1.Caption:=TEdit(FindComponent('Edit' + IntToStr(i))).Text; label2.Caption:=TEdit(FindComponent('Edit' + IntToStr(i))).Text; end;
end. |
zeigen mit label1 und 2 immer das selbe an,
benutze ich aber statdessen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var Edit:Array[1..4]of TEdit; i:Integer; i1:integer; begin i:=Random(10)+1; i1:=Random(4)+1; label1.Caption:=TEdit(FindComponent('Edit' + IntToStr(i))).Text; label2.Caption:=TEdit(FindComponent('Edit' + IntToStr(i1))).Text; end;
end. |
variieren( hoffe das schreibt man so) meine ergebnisse
udn noch was, ist dein vorschlag für jedes editfeld eine schleife zu machen nicht etwas aufwendig?
|
|
xan553 
      
Beiträge: 67
|
Verfasst: Do 01.02.07 19:57
also ich hab da mal en paar sachen versucht aber es klappt nichts zum bleistifft:
Delphi-Quelltext 1: 2:
| IF label1.caption = '' then label1.Caption:=TEdit(FindComponent('Edit' + IntToStr(i))).Text; |
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 01.02.07 20:00
Den Array kannst Du weglassen, hatt Ich nur vergessen zu löschen.
Und variablen kannst Du zusammenfassen mit Komma getrennt.
var
i,j,k,l:Integer
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Renegade
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: Do 01.02.07 20:13
Ungetestet und nur auf die schnelle da hin geschrieben
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure wuerfeln; var i, n: integer; frei: boolean; begin frei:=false; n:=0; for i:=1 to 5 do begin while Frei<>true do begin n:=random(5)+1; if tLabel(findComponent('Label'+IntToStr(n))).tag<>1 then Frei:=true; end; tLabel(findComponent('Label'+IntToStr(n))).caption:=tEdit(findComponent('Edit'+IntToStr(i))).text; tLabel(findComponent('Label'+IntToStr(n))).tag:=1; frei:=false; end;
end; |
_________________ Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
Renegade
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: Do 01.02.07 20:15
Ach ja - und wäre noch schön wenn du mir jetzt sagen könntest wo die Macke in dem Code ist!
Tip: Ablaufgeschwindigkeit / Unnötige Durchläufe...
_________________ Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
Robinator
      
Beiträge: 275
WinXP
BDS 2006
|
Verfasst: Do 01.02.07 20:58
Die Macke in dem code ist, dass es unter umständen ewig dauern kann. Mal als Beispiel... du hast 100 labels, eins hat noch keine Caption. Nun kann es verdammt lange dauern, bis du per Random auf die entsprechende Zahl kommst.
Ich hab schonmal in nem anderen Thread geschrieben, wie man nen array mit zufallszahlen befüllt, die nur einmal vorkommen
hier nochmal der code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| Procedure CreateRandomBla; var MyArr : Array of Integer; RandArr : Array[0..X] of Integer; i, ind : integer; Procedure Delete(Index : integer); var i : integer; begin for i := index to Length(MyArr) - 2 do MyArr[i] := MyArr[i + 1]; SetLength(MyArr, Length(MyArr) - 1); end; begin SetLength(MyArr, X + 1); for i := 0 to X do MyArr[i] := i; for i := 0 to X do begin ind := Random(Length(MyArr)); RandArr[i] := MyArr[ind]; Delete(ind); end; end; |
Gruss, Rob
_________________ erare humanum est
|
|
xan553 
      
Beiträge: 67
|
Verfasst: Do 01.02.07 21:08
ich glaube nicht das mir der code viel weiter hilft, denn der fehler meines codes liegt denke ich hier
Delphi-Quelltext 1:
| if tLabel(findComponent('label'+IntToStr(n))).tag<>1 |
und da sehe ich keinen zusammenhang
danke trotzdem
|
|
Robinator
      
Beiträge: 275
WinXP
BDS 2006
|
Verfasst: Fr 02.02.07 00:11
Wer lesen kann ist klar im Vorteil 
_________________ erare humanum est
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Fr 02.02.07 01:04
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Renegade
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: Fr 02.02.07 09:29
Robinator hat folgendes geschrieben: | Die Macke in dem code ist, dass es unter umständen ewig dauern kann. Mal als Beispiel... du hast 100 labels, eins hat noch keine Caption. Nun kann es verdammt lange dauern, bis du per Random auf die entsprechende Zahl kommst. |
Verräter 
_________________ Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
Renegade
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: Fr 02.02.07 09:32
_________________ Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|