Entwickler-Ecke
Sonstiges (Delphi) - Problem mit ignorierten Anweisungen
hschuh - Mi 26.02.03 15:33
Titel: Problem mit ignorierten Anweisungen
Hallo,
ich habe ein etwas seltsames Problem:
Ich habe in einem Programm (Delphi 6) eine Variable deklariert:
var StartOK :Bool;
Diese setzte ich in einer Procedure (TForm1.StartClick....) auf FALSE.
StartOK := FALSE;
und je nach Programmverlauf auf TRUE .....
Der Witz ist, die erste Anweisung (wie oben beschrieben) := FALSE wird voll übersprungen; auch alle weiteren Anweisungen die diese Variable betreffen werden einfach Übersprungen.
Solangsam zweifle ich an mir!!! Ich kann das Problem einfach nicht finden.
Über jeden Tipp bin ich sehr dankbar.
Danke im Vorraus,,
Gruß Hendrik
Delete - Mi 26.02.03 15:38
Funktioniert denn das Programm richtig? Sieht so aus, als ob der Compiler da etwas optimiert hat. Gibt er denn irgendwelche Warnungen oder Hinweise aus?
hschuh - Mi 26.02.03 15:41
Ja,
er meckert verschiedene Variablen an; unteranderem auch:
[Hinweis] Auswertung.pas(116): Auf 'StartOK' zugewiesener Wert wird niemals benutzt
[Hinweis] Auswertung.pas(109): Auf 'StartOK' zugewiesener Wert wird niemals benutzt
Obwohl diese natürlich benutzt werden !
hschuh - Mi 26.02.03 15:44
P.S.:
Das Programm läuft leider dadurch nicht richtig.
Gruß
HS
Delete - Mi 26.02.03 16:34
| hschuh hat folgendes geschrieben: |
Ja,
er meckert verschiedene Variablen an; unteranderem auch:
[Hinweis] Auswertung.pas(116): Auf 'StartOK' zugewiesener Wert wird niemals benutzt
[Hinweis] Auswertung.pas(109): Auf 'StartOK' zugewiesener Wert wird niemals benutzt
Obwohl diese natürlich benutzt werden ! |
Sicher? Poste mal den Code. Also wenn Delphi meint die ariable wird nicht benutzt, dann ist das in 99% der Fälle auch so.
hschuh - Mi 26.02.03 16:40
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: 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:
| procedure TForm1.StartClick(Sender: TObject); var VonDatum, BisDatum, HilfDatum1, HilfDatum2, Suche, Ausgabe :String; var i, e :Integer; var TempDate :TDateTime; var f :Textfile; var StartOK :Bool;
var A ... :String;
var ICPMNC: array[1..20] of String; var DIA: array[1..20] of String;
begin
StartOK := FALSE;
// Prüfung ob Von Datumseingabe OK try begin TempDate := StrToDate(EVonDat.Text); VonDatum := EVonDat.Text; StartOK := TRUE; EVonDat.Color := clWindow; end; except on E: EConvertError do begin EVonDat.Text := ''; StartOK := FALSE; EVonDat.Color := clRed; ShowMessage('Bitte geben Sie ein korrektes Startdatum ein (TT.MM.YYYY)'); end; end;
// Prüfung ob Bis Datumseingabe OK try begin // TempDate := StrToDate(EBisDat.Text); BisDatum := EBisDat.Text; StartOK := TRUE; EBisDat.Color := clWindow; end; except On E: EConvertError do begin EBisDat.Text := ''; StartOK := FALSE; EBisDat.Color := clRed; ShowMessage('Bitte geben Sie ein korrektes Endedatum ein (TT.MM.YYYY)'); end; end; .....
if StartOK = TRUE then begin T_DB.Open; .... |
[/code]
Moritz M. - Mi 26.02.03 16:52
Hmm,,schau mal ob es irgendwo noch einen 2 Variable StartOK gibt..nein, das würd der compiler meldern...hmmm...sauerkraut! :x
Du könntest den Code nochmal abtippen(wenns nicht zu viel ist) das hilfe meißtens
Delete - Mi 26.02.03 17:08
Das Problem ist, dass die Zuweisungen von bStart alle in einem try-except-Block liegen. Das wird Delphi nicht gefallen.
hschuh - Mi 26.02.03 17:09
Würde ich eigentlich nur ungerne machen, sind mittlererweile 620 Zeilen code........naja, vielleicht an einem einsamen wochenende.
Irgendetwas einzustellen am compiler gibt es da nicht? So was verstecktes ?????
:roll:
hschuh - Mi 26.02.03 17:12
@Luckie:
Welche andere Möglichkeit hätte ich denn ?????
hschuh - Mi 26.02.03 18:22
@Luckie:
Ich habe glaube ich das Problem gefunden: Du hattest recht!
Ich habe das ganze jetzt umgeschrieben und es funktioniert.
Delphi wertet nur den Ersten Ausruck nach dem Try aus.
Daher das ganze.
Manchmal kann man sich ganz schön verrennen !!!!!!
Gruß
Hendrik
Delete - Do 27.02.03 00:14
Genau, einfach umschreiben.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!