AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi scheint einfach, aber der schein trügt ...

scheint einfach, aber der schein trügt ...

Ein Thema von Helmut · begonnen am 23. Nov 2002 · letzter Beitrag vom 23. Nov 2002
Antwort Antwort
Helmut

Registriert seit: 22. Nov 2002
64 Beiträge
 
#1

scheint einfach, aber der schein trügt ...

  Alt 23. Nov 2002, 21:54
Hallo,

ich brauch schon wieder eure Hilfe

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...

mfg
Helmut

ps: fragt nach wenn irgendwas unklar ist - manchmal versteht man nur selbst seine erklärungen

[edit=Daniel B]Und ab nach Object Pascal; hat ja was mit Schleifen zutun.[/edit]
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 23. Nov 2002, 22:00
Hallo Helmut,

mach eine Schleife:

Delphi-Quellcode:
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;
Grüsse, Daniel
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#3
  Alt 23. Nov 2002, 22:10
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:
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;
Hab ich mir jetzt nur mal so ausgedacht, geht sicher auch andere, vielleicht einfachere Wege

Gruß, Sebastian
  Mit Zitat antworten Zitat
Helmut

Registriert seit: 22. Nov 2002
64 Beiträge
 
#4
  Alt 23. Nov 2002, 22:34
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:
wuerfelRecord = record
                 zahl: integer;
                 selected: boolean;
               end;

...
var
wuerfel: array[1..6] of wuerfelRecord;
soo.. (*lufthol* ) :

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?

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
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#5
  Alt 23. Nov 2002, 23:02
Hi Helmut,
ich denke von der Logik her sollte diese Umsetzung klappen:

Delphi-Quellcode:
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;
Der Aufruf funktioniert dann mit:
Delphi-Quellcode:
if testewuerfel(wuerfel) then
begin
//Das was dann passieren soll, wenn alle gleich sind
end else
Showmessage('Alles Falsch!');
PS: Was proggst du gerade?

MFG
Thomas
Sport ist mord...
  Mit Zitat antworten Zitat
Helmut

Registriert seit: 22. Nov 2002
64 Beiträge
 
#6
  Alt 23. Nov 2002, 23:23
super, es klappt!
Also echt ne super lösung - du kannst gedankenlesen

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 . 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!

mfg
Helmut
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz