AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IF-Problem

Ein Thema von danku · begonnen am 17. Jun 2006 · letzter Beitrag vom 30. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#1

IF-Problem

  Alt 17. Jun 2006, 17:50
sry wird gerade überarbeitet.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: IF-Problem

  Alt 17. Jun 2006, 18:03
Lass doch mal bitte bei den if-Abfragen das "=true" und "=false" weg und schreib nur

if RadioButton1.Checked oder eben

if not RadioButton1.Checked Dann formatiere das bitte etwas, vor allem bei den begin/ends mit der EInrückung. Sehr übersichtlich ist es z.B. so:

Delphi-Quellcode:
begin
  code
  code
  begin
    code
  end;
end;
Denn so habe ich persönlich keine Lust, das auseinander zu friemeln und mich da einzulesen.


Edit: Huch, irgendwie überarbeitest du es ja schon. Evtl. kannst du meinen Beitrag dann ignorieren.
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: IF-Problem - >Timerabhängigkeit

  Alt 19. Jun 2006, 09:38
Ich hab jetzt die If-klauseln noch mal alle überarbeitet.
folgendes problem kommt zum vorschein:
ich habe 2 timer für die zwei. radiogroups:

Timer1 (timerzeit)
Delphi-Quellcode:
...
//////// ZEITDAUER IN MIN

timerfest.Enabled :=false; //der timer von der 2.rg

if edzeit.Text='00'
  then begin edzeit.text:='01'
  end;

  Button1.Caption:='Abbrechen';

      if cbsignal.Checked=false then begin
     // opendialog1.Execute;
      cbsignal.checked:=true;
      end;
      
  rgzwei.Enabled:=false;

  dtAlarm2 := StrToTime(edende.Text + ':' + edende2.Text + ':' + edende3.Text) + StrToDate(cbdatum.Text);
  if Now < dtAlarm2 then
    ShowRemainingTime2(dtAlarm2)
    else begin //datei abspielen
    CoolTrayIcon1.ShowMainForm;
    with MediaPlayer1 do
        begin
          if cbsignal.checked
          then begin
          Filename := OpenDialog1.Filename;
          Open;
          Play;
          timerzeit.Enabled:=false;
          end;
        end;
  ..
Timer2 (Timerfest)
Delphi-Quellcode:
//////// Feste Uhrzeit

timerzeit.Enabled :=false; //timer1
dtAlarm := StrToTime(edhours.Text + ':' + edmin.Text + ':' + edseconds.Text) + StrToDate(cbdatum.Text);



   if rgzwei.Checked then begin
    rgeins.Enabled:=false;
    cbdatum.Enabled:=false;
    cbsignal.Enabled:=false;
    end;
    Button1.Caption:='Abbrechen';

    if (dtAlarm) < (now) //einen tag höher setzen
      then begin cbdatum.ItemIndex:= 1;
      end;
      if cbsignal.Checked=false then begin
         // opendialog1.Execute;
          cbsignal.checked:=true;

          end;
            if Now < dtAlarm then
            ShowRemainingTime(dtAlarm)
            else begin //datei abspielen
            CoolTrayIcon1.ShowMainForm;
            with MediaPlayer1 do
                begin
                  if cbsignal.checked
                  then begin
                  Filename := OpenDialog1.Filename;
                  Open;
                  Play;
                  speedbutton2.Visible:=true;
                  timer3.Enabled:=true;
                 end;
              end;
         
...
Um die Timer zu starten betätigt man den START-Button:
Delphi-Quellcode:
if rgeins.checked=true
  then if button1.Caption='Starten'
  then begin timerzeit.Enabled:=true;
  end;
if rgzwei.checked=true
  then if button1.Caption='Starten'
  then begin timerfest.Enabled:=true;
  end;


if (button1.Caption='Abbrechen')
then if (rgeins.checked) and (timerzeit.Enabled=true)
      then if MessageDlg('Timer ändern?', mtConfirmation, [mbYes, mbNo], 0) =
        mrYes then begin
        timerzeit.Enabled:=false;
       // timerfest.Enabled:=true;
          rgzwei.Enabled:=true;
          mehours.text:='00';
          memin.Text:='00';
          meseconds.text:='00';
          mediaplayer1.Close;
          cbsignal.Enabled:=true;
          button1.Caption:='Starten';
          mediaplayer1.Close;
          end;

if (button1.Caption='Abbrechen')
then if (rgzwei.checked) and (timerfest.Enabled=true)
      then if MessageDlg('Timer ändern?', mtConfirmation, [mbYes, mbNo], 0) =
        mrYes then begin
        timerfest.Enabled:=false;
        // timerzeit.Enabled :=true;
          rgeins.Enabled:=true;
          mehours.text:='00';
          memin.Text:='00';
          meseconds.text:='00';
          mediaplayer1.Close;
          cbsignal.Enabled:=true;
          button1.Caption:='Starten';
          mediaplayer1.Close;
          end;
Sobald bspw. die 1.radiogroup geklickt wurde und der START-Button,
wird der zähler in den 3 unteren memofeldern um 1 verringert. (wie countdown)
das geschieht solange bis '00'; dann wird eine datei abgespielt.
durch betätigen des START-Buttons wird automatisch die caption in Abbrechen umbenannt.

wenn der zähler vorzeitig abgebrochen (Abbrechen -> Caption wieder STARTEN umbenannt) wird, soll anhand der 2.radiogroups der timer2 geladen werden und time1 zurückgesetzt werden. das funzt ja auch alles einwandfrei nur ist das problem, sobald man die 1.radiogroup abbricht, und dann in der 2.radiogroup klickt und da STARTEN klickt wird der timer von der 1.radiogroup aktiviert. warum?
andersherum ist es genauo...
Miniaturansicht angehängter Grafiken
bsp_814.jpg  
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#4

Re: IF-Problem

  Alt 19. Jun 2006, 10:19
1. then if meiden .. da blickt niemand durch, vor allem wenn Du else-Zweige nutzt. Allerdings kannst Du bei End Else If durchaus in der aktuellen Einrückungsebene bleiben, ist aber nach Gusto.
2. end immer auf Höhe vom begin .. dann siehst Du besser, ob alle Ebenen auch wirklich ein end haben
3. then und begin entweder immer hinten oder immer auf neuer Zeile, wobei du sie auch getrennt schreiben kannst: then hinten und begin auf neuer Zeile. Auch hier gilt auf gleicher Höhe mit if. Eingerückt wird erst der Block zwischen Begin und End.
4. das gleiche gilt für With .. do, repeat .. until, while/For ... do
5. nie unvermittelt einrücken, nur innerhalb Begin .. End. Wenn Du gedanklich einen neuen Abschnitt anfängst, dann lasse eine Zeile aus oder schreibe eine Kommentarzeile. Du kannst auch einfach so einen bagin-end-block ohne ifs schreiben, wenn Du unbedingt zur Hervorhebung weiter einrücken willst.
6. if immer einzeilig oder mit begin..end, vor allem, wenn das Then hinten steht. Man schreibt schnell mal was unter einen If und dann machter was ganz anderes.
7. das sind keine Gesetze, sondern Vorschläge, damit andere auch eine chance haben, deinen Code zu lesen. Du kannst Dir auch eigene Regeln aufstellen, solltest sie dann aber STRIKT befolgen. Hilft auch Dir selber, wenn Du Deinen Code nach 2 Jahren wieder anschaun musst.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: IF-Problem

  Alt 19. Jun 2006, 16:43
hm das sind doch aber alles nur "schönheitssachen", zum besseren lesen.
das hat doch aber nicht wirklich mit meinen problem zu tun.
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: IF-Problem

  Alt 23. Jun 2006, 08:51
das problem liegt irgendwie bei:

Delphi-Quellcode:
if rgeins.checked
then timerzeit.Enabled:=true
else timerfest.Enabled:=true;

//auf umständliche weise wie:
if rgeins.checked
  then if button1.Caption='Starten'
  then begin
  timerfest.enabled:=true;

if rgzwei.checked
...
//funzt auch nicht
wenn bspw. eine checkbox(2/2) gewählt wurde,
auf den START-Button geklickt wurde,
wird der timer von der zugehörigen radiogroup gesetzt.
zur laufzeit (d.h. wenn timer geladen wird) ändert sich die caption in ABBRECHEN.
problematisch wird es wenn Abbrechen gedrückt wird
und anstatt der vorherigen checkbox in die andere checkbox geklickt wird und diesmal
auf STARTEN geklickt wird.
Denn hier wird immer noch der alte Timer von der 1.checkbox geladen.
Warum?
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: IF-Problem

  Alt 23. Jun 2006, 21:44
Zitat von danku:
hm das sind doch aber alles nur "schönheitssachen", zum besseren lesen.
das hat doch aber nicht wirklich mit meinen problem zu tun.
Weil niemand mehr durch den Code durchblickt...

Warum schreiben wir denn alle nicht so:
procedure TForm1.TimerTimer(Sender : TObject) var i : Byte; begin for i := 0 to 4 do begin Showmessage(IntToStr(i) + '. Zahl'); Label1.Text := IntToStr(i) + '. Zahl ist dran'; end; end; Da bruach man erstmal 5 Minuten bis man sieht, wies funzt, aber so:
Delphi-Quellcode:
procedure TForm1.TimerTimer(Sender : TObject)
var i : Byte;
begin
  for i := 0 to 4 do begin
    Showmessage(IntToStr(i) + '. Zahl');
    Label1.Text := IntToStr(i) + '. Zahl ist dran';
  end;
end;
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: IF-Problem

  Alt 24. Jun 2006, 16:53
hm das mit der überschaubarkeit ist mir schon klar.
so krass wie deins code ich allemal nicht.
mein problem ist aber immer noch nicht geklärt.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#9

Re: IF-Problem

  Alt 24. Jun 2006, 18:09
Zitat von danku:
hm das mit der überschaubarkeit ist mir schon klar.
so krass wie deins code ich allemal nicht.
mein problem ist aber immer noch nicht geklärt.
Hi, dir ist aber schon klar, dass sich keiner deinem Problem annehmen wird, solange du solche Beiträge verfässt?
Also sorry, ein wenig Gemeinschaft gehört nun mal zum Forum und damit etwas Mitarbeit von jedem. Die Leute die dir bis jetzt schrieben meinen es nicht böse, sondern wollten dir helfen. Es kostet dich doch nicht viel Zeit deinen Code mal etwas umstrukturiert (lesbar) hinzuschreiben. Das hilft dir mit Sicherheit auch, vielleicht findest du dann deinen Fehler auch schon selbst. Jedenfalls fände ich es fast unverständlich wenn dir jmd. mit dem Code (und der Reaktion auf die anderen Beiträge) hilft.
Und wenn du dabei bist, versuch doch bitte gleich dein Problem etwas klarer zu schildern. Unter Laufzeit versteht man dass das Programm gestartet wurde (läuft). Die Alternative dazu ist die Designzeit (wenn dein Programm nicht läuft und du die Fenster designst). Zudem werden die Timer nicht geladen, sie werden ggf. erzeugt (denke du setzt sie jedoch schon zur Designzeit), gestartet und gestoppt.
Also tut mir leid, aber ich habe zumindest nicht wirkich das Gefühl dein Problem verstanden zu haben, wäre also schön wenn du es mit dem geänderten Code und einer klaren Erklärung nochmal versuchen könntest, dann hilft dir auch sicher gerne jmd. (und nach der Anzahl deiner Beiträge zu Urteilen solltest du das alles schon längst wissen).

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: IF-Problem

  Alt 24. Jun 2006, 20:00
okay erfolgt morgen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:20 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