Autor |
Beitrag |
Morpheus1572
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: So 13.07.08 13:10
Hallo Leutz,
ich habe ein Phänomen, was ich mir nicht erklären kann.
Wenn ich mein Programm mit F7 durchlaufen lasse, klappt alles so wie es sein soll!!!
ABER:
Mache ich einen Start mit F9, dann verhält sich das Programm anders. Ich versuche mal das Prob. zu schildern:
Nachdem das Prog eine Zählschleife durchlaufen hat, soll es einen Button von rot in gelb färben (gekoppelt an einer Bedingung natürlich)! Mit F7 klappt es Bilderbuchmäßig. Bei F9 jedoch muss ich quasi 2 mal in die Schleife gehen um das selbe ergebnis zu bekommen.
Bin ich bekloppt? Für ärztlichen Beistand bin ich wirklich dankbar.
Gruß Morph.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 13.07.08 14:06
Sind alle Variablen initialisiert?
Gibt es keine Zahlenüberläufe oder anderen Seiteneffekte?
Zeig mal etwas Quelltext von der Stelle, die nicht geht ... Du weißt, wir arbeiten mit Quelltext und nicht irgendwelchen Kristallkugeln 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Morpheus1572 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: So 13.07.08 14:11
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107:
| var StrDBStat, StrStraStat,DatZaehler : String; i, z, dz: Integer; begin StrDBStat := IntToStr(DBStat); Label2.Caption := 'Der Wert von DBStatus ist: ' + StrDBStat;
if StrDBStat = '1' then begin Image1.Picture.LoadFromFile('Btn_gr50x25.ico'); Label3.Caption := 'Der Status der Datenbank ist okay.'; BitBtn1.Visible := False; ADOQuery1.ConnectionString := ConStr; ADOQuery1.Active := False; ADOQuery1.SQL.Text := 'SELECT count([AG-ID]) as ANZ FROM AG'; ADOQuery1.Active := True; DatZaehler := ADOQuery1.FieldByName('ANZ').AsString; ********************>
if DatZaehler = '1' then begin ADOQuery1.Active := False; ADOQuery1.SQL.Text := 'SELECT * FROM AGInfo'; ADOQuery1.Active := True; i := ADOQuery1.Fields.Count; dz := 0; z :=0; while z < i do begin if ADOQuery1.Fields.Fields[z].AsString = '' then dz := dz+1; z := z+1; end; DatZaehler := IntToStr(dz); ShowMessage('Die Anzahl der leeren Felder beträgt: ' + DatZaehler); if dz <> 0 then begin Image2.Picture.LoadFromFile('Btn_g50x25.ico'); Label5.Caption := 'Es sind AG-Daten erfasst, jedoch noch nicht ' + 'vollständig! Mit Bearbeiten können Sie sie editieren.' end <***************************** else begin Image2.Picture.LoadFromFile('Btn_gr50x25.ico'); Label5.Caption := 'Es sind alle Daten der Agentur erfasst!'; BitBtn2.Visible := False; end; end else begin Image2.Picture.LoadFromFile('Btn_r50x25.ico'); Label5.Caption := 'Es ist bisher keine AG erfasst! Klicken sie auf ' + 'Bearbeiten um eine Agentur anzulegen.' end; ADOQuery1.Active := False; ADOQuery1.SQL.Text := 'SELECT count(StrID) as ANZ FROM Strasse'; ADOQuery1.Active := True; DatZaehler := ADOQuery1.FieldByName('ANZ').AsString; ShowMessage('Anzahl der gelisteten Straßen: ' + DatZaehler);
if DatZaehler > '0' then begin Image3.Picture.LoadFromFile('Btn_gr50x25.ico'); Label7.Caption := 'Das Straßenverzeichnis ist eingelesen. Es ' + 'sind derzeit ' + DatZaehler + ' Straßen erfasst.' end else begin Image3.Picture.LoadFromFile('Btn_r50x25.ico'); Label7.Caption := 'Das Straßenverzeichnis der Agentur ' + 'ist noch nicht erfasst! Sie müssen erst eine AG anlegen bevor ' + 'Sie das Verzeichnis einlesen können!' end; end else begin Image1.Picture.LoadFromFile('Btn_r50x25.ico'); Label3.Caption := 'Die Datenbank ist entweder nicht vorhanden oder ' + 'beschädigt. Wenden Sie sich bitte an Ihren ' + 'Administrator.'; Image2.Picture.LoadFromFile('Btn_r50x25.ico'); Label5.Caption := 'Es ist bisher keine AG erfasst!'; BitBtn2.Visible := False; Image3.Picture.LoadFromFile('Btn_r50x25.ico'); Label7.Caption := 'Es ist kein Straßenverzeichnis installiert!' end; end; |
Sorry, dachte das wäre ein allgemein bekanntes problem.
was ich nicht verstehe ist eben, dass es im Einzelschrittmodus funzt und im normalen nicht!!!???
die Markierungen zeigen den bestimmten bereich.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 13.07.08 23:34
hmmm, Also ne DB, die dahinter hängt und die erst bei Bedarf geladen wird.
Kannste kurz noch beschreiben, was er da jetzt konkret falsch macht?
Irgendne Exception, weil der Wert von DatZähler nicht stimmt?
Kannst Du mal schauen: ggf. musst Du nach dem ADOQuery.active := True; erst noch nen kleinen Moment warten, bis er die Daten von der DB geholt hat. Schau dazu mal kurz, ob die Daten Synchron oder Asynchron geholt werden
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Morpheus1572 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: Mo 14.07.08 09:03
Moin @ all,
BenBE DU bist der Hammer. Dadurch das du eben deine Gedanken niedergeschrieben hast statt sie für dich zu behalten, ist mir der Fehler förmlich ins Gesicht gesprungen!!!
In der Zeile 19 ist der Fehler! diese Zeile muss raus! die Connection wurde schon im Form1 hergestellt und ich mache hier noch einmal eine Verbindung. Ich weiß nicht wie genau das funzt aber wenn ich die Zeile herausnehme macht das Prog genau das was es auch tun soll. und zwar im ersten Durchlauf!
Wie ich schon sagte, es funktionierte ALLES perfekt solange ich step by step vorging. offensichtlich habe ich dem Programm genügend zeit gelassen alles zu aktualisieren, welche es im nomal-Modus wohl nicht bekam. Fehlermeldungen kamen nicht! nachdem ich aber die zweite Conection-Geschichte entfernt habe ist alles chick.
Vielen Dank an Dich! Deine geschriebene Überlegung war der Schlüssel. 
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 14.07.08 09:59
Ich hab früher auch mit den ADOs regelmäßig gearbeitet und da auch manchmal ähnliche Effekte gehabt ...
Außerdem ist unterschiedliches Verhalten abhängig von der Ausführungszeit eigentlich fast immer ein Zeichen von Timing-Problemen; und das einzige, was bei Dir Timing-Abhängig war, ist das Fetchen der Daten aus der Connection 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|