![]() |
scheint einfach, aber der schein trügt ...
Hallo,
ich brauch schon wieder eure Hilfe :roll: Das problem ist eigentlich total banal, aber ich komm nicht auf die gedankliche lösung: Ich habe 6 boolean-variablen (variable[index].selected:=true/false). (i:=1 to 6) Durch den programmverlauf vor diesem teilstück hat der benutzer mindestens 2 dieser variablen auf true gesetzt. Ich möchte jetzt alle auf true gesetzten variablen vergleichen, und zwar deren zahlenwerte (variable[index].zahl:=?). Wenn alle auf true gesetzten variablen gleich sind, wird ein programmteil aufgerufen, wenn sich mind. einer von den anderen unterscheidet wird ein anderer programmteil aufgerufen. (if-then) Ich hab mir schon den kopf darüber zerbrochen. Und ihr habt es ja noch schwerer weil ihr euch erst reindeknen müsst. Ich hoffe trotzdem das mir jemand helfen kann... :lol: mfg Helmut ps: fragt nach wenn irgendwas unklar ist - manchmal versteht man nur selbst seine erklärungen :mrgreen: [edit=Daniel B]Und ab nach Object Pascal; hat ja was mit Schleifen zutun.[/edit] |
Hallo Helmut,
mach eine Schleife:
Delphi-Quellcode:
Grüsse, Daniel :hi:
for i := 1 to 6 do
begin if i <> Deine2Zahlen then //or noch einfügen begin //Tue hier was end else begin //Tue hier was anderes end; end; |
Wenn ich dich richtig verstanden habe hast du ein array (variable) mit records drin die je ein Feld Selected und Zahl enthalten? Dann müsste das so gehen:
Delphi-Quellcode:
Hab ich mir jetzt nur mal so ausgedacht, geht sicher auch andere, vielleicht einfachere Wege :mrgreen:
var
i,zahl: integer; begin for i := 1 to 6 do if variable[i].selected then begin zahl := variable[i].zahl; break end; //erste Zahl herausfinden for i := 1 to 6 do if (variable[i].selected) and (variable[i].zahl <> zahl) then begin tu(irgend,was,wenn); die(zahlen,unterschiedlich,sind); //hier code bei unterschiedlichen zahlen exit end; tuirgendwasanderes //hier bei gleichen zahlen end; Gruß, Sebastian |
Hi,
hab ichs mir doch gedacht, bei meiner "super" erklärung wirds bestimmt nicht so verstanden wie ich das mir gedacht habe :). Also, Grotesquery, du hats mich auf eine Idee gebracht. Ich bin grad am überlegen wie ich das umsetze :). Aber um das nochmal zu klären, hier nochmal eine genaue beschreibung: Ich habe ein array von records
Code:
soo.. (*lufthol* :lol: ) :
wuerfelRecord = record
zahl: integer; selected: boolean; end; ... var wuerfel: array[1..6] of wuerfelRecord; wuerfel[] besteht ja aus 6 records. Der "benutzer" hat jetzt mind. 2 dieser records auf wuerfel[index].selected:=true; gesetzt, er kann aber auch alle 6, oder 4 oder so auf true gesetzt haben. Ich möchte jetzt alle vergleichen die wuerfel[index].selected:=true gesetzt haben, und zwar mit wuerfel[index].zahl(:=integer). Wenn von allen true-wuerfeln die .zahl-werte sich unterscheiden (nicht ALLE gleich sind), dann kommt ein fehler (msg oder so... is ja jetzt egal..), andernfalls wird ein anderes begin - end; ausgeführt. Nicht grade verständlicher, oder? :oops: Naja, ich bin grad am überlegen, Grotesquery hatte ja die idee mit dem übergeben aller "true-zahlen" an eine "zahl". Wenn diese zahl nun ein array wäre könnte ich von allen auf true gesetzten die zahlen an diese zahlen übergeben und dann die arraysdie eine zahl enthalten einfach mit if (zahl[1]=zahl[2] and zahl1[1]=zahl[3] usw.) then ... überprüfen... gleichmal testen :) |
Hi Helmut,
ich denke von der Logik her sollte diese Umsetzung klappen:
Delphi-Quellcode:
Der Aufruf funktioniert dann mit:
function testewuerfel(wurf: array of wuerfelRecord):boolean;
var i,i1:integer; begin result:=true; for i:=0 to length(wurf)-1 do if wurf[i].selected then for i1:=0 to length(wurf)-1 do if wurf[i1].selected then if wurf[i].zahl<>wurf[i1].zahl then result:=false; end;
Delphi-Quellcode:
PS: Was proggst du gerade?
if testewuerfel(wuerfel) then
begin //Das was dann passieren soll, wenn alle gleich sind end else Showmessage('Alles Falsch!'); MFG Thomas |
super, es klappt! :dancer2: :mrgreen:
Also echt ne super lösung - du kannst gedankenlesen :D Du wolltest ja wissen was ich code: Ein "würfelspiel". Eigentlich spielt man das mit würfelbecher und 6 würfeln, is ziemlich regelaufwändig (2 seiten regeln! *g*) aber macht ne menge spass. Versteht sich von selbst das ich es dann hier als erstes veröffentliche, bei der super Hilfe dies hier im Forum gibt :spin: . Mal sehn wann ich fertig werde, schätze so in einer woche oder in zweien :) und danke nochmal! Ich glaube den schwierigsten teil in meinem programm hab ich jetzt sogut wie hinter mir! :coder: mfg Helmut |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz