Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Problem bei If-Abfrage
kongreddgrass - Di 14.10.03 17:23
Titel: Problem bei If-Abfrage
Woran liegt hier in der if Abfrage der Fehler?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.FormCreate(Sender: TObject); var ini: TIniFile; res: String; begin ini:=TIniFile.Create('C:\Programme\Progg-Starter\Configuration\Load_1.ini'); try res:=ini.ReadString('LOAD_DESIGN', 'Design_1', res); if 'TRUE' = res then Form1.Hide Form2.Show else Form2.Show end; finally ini.free; end; |
Delphi sagt, dass der Fehler da so bei Form2.Show liegt. FINALLY EXCEPT.
Ich versteh nix drunter[/delphi]
Delete - Di 14.10.03 17:28
Na ja, überleg mal:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| if 'TRUE' = res then Form1.Hide Form2.Show else Form2.Show end; |
Ich hab´s mal eingerückt. Siehst du was ich meine? Was immer du vorhast:Wahrscheinlich fehlt ein
begin, falls Form1.Hide und Form2.Show beide von der if-Abfrage abhängig sind. Dann fehlt aber auch ein
end, was weiter unten zuviel ist. Und auf jeden Fall fehlt ein Semikolon.
Gausi - Di 14.10.03 17:30
so vielleicht?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| try if 'True'=res then begin form1.hide; form2.show; end else form2.show; finally ini.free; end;
end; |
Andromeda - Di 14.10.03 17:30
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.FormCreate(Sender: TObject); var ini: TIniFile; res: String; begin ini:=TIniFile.Create('C:\Programme\Progg-Starter\Configuration\Load_1.ini'); try res:=ini.ReadString('LOAD_DESIGN', 'Design_1', res); if 'TRUE' = res then begin Form1.Hide; Form2.Show; end else Form2.Show; finally ini.free; end; |
so müsste es gehen oder
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.FormCreate(Sender: TObject); var ini: TIniFile; res: String; begin ini:=TIniFile.Create('C:\Programme\Progg-Starter\Configuration\Load_1.ini'); try res:=ini.ReadString('LOAD_DESIGN', 'Design_1', res); if 'TRUE' = res then Form1.Hide Form2.Show else Form2.Show; finally ini.free; end; |
[/delphi]
kongreddgrass - Di 14.10.03 17:41
Hi,
wenns ich so mache
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.FormCreate(Sender: TObject); var ini: TIniFile; res: String; begin ini:=TIniFile.Create('C:\Programme\Progg-Starter\Configuration\Load_1.ini'); try res:=ini.ReadString('LOAD_DESIGN', 'Design_1', res); if 'True'=res then begin Form1.hide; Form2.show; end else Form2.show; finally ini.free; end; end; |
kommt ein Fehler.
Dieser lautet
| Zitat: |
| Project Menue.exe raised exception class EAccessViolation with message 'Access violating at adress 0045434E in Module 'MENUE.EXE'. Read of adress FFFFFFFF'. Process stopped. Use Step or Run to continue. |
#
Wisst ihr mehr.
Hab keine Ahnung was der meint. Sorry for my bad english!
Terra23 - Di 14.10.03 18:20
... spontan würde ich vermuten, daß du anstelle von
Delphi-Quelltext
1:
| res:=ini.ReadString('LOAD_DESIGN', 'Design_1', res); |
einfach mal einen anderen Default-Wert nehmen solltest, z.B. "False":
Delphi-Quelltext
1:
| res:=ini.ReadString('LOAD_DESIGN', 'Design_1', 'False'); |
Du kannst doch nicht so derart mit Variablen hantieren. Du mußt mal überlegen,
was deine Variable sein soll und
was dein Default-Wert ist. Bei dir ist der Default-Wert gleich der Variablen.
PS: Das soll nicht persönlich klingen. :-) Ich vermute aber wirklich, daß es das ist; einen solchen Fehler hatte ich noch nie..
kongreddgrass - Mi 15.10.03 12:40
Danke
Muss ich dann gleich ausprobieren
kongreddgrass - Mi 15.10.03 14:13
Geht bei mir auch nicht. Ist mir auch sehr komisch. Ich benutze Delphi 6 Personal und habe noch ein paar Updates draufgespielt. Vielleicht ist da was... der Text schaut so richtig aus. Ich versteh es einfach nicht
Terra23 - Mi 15.10.03 16:19
So, fertig. Es hat daran gelegen, daß du alles ins FormCreate-Ereignis schreibst und zu dem Zeitpunkt die Form2 noch nicht erzeugt wurde. Sprich:
1) Du mußt im Create-Ereignis der Form1 eine globale Variable vom Typ Boolean auf True setzen.
2) Du mußt im OnActivate-Ereignis der Form1 deinen Code setzen und mit einer Abfrage umschließen, ob die Boolsche Variable True ist. Dann mußt du weiterhin in deinen Code am Ende die Boolsche Variable auf True setzen, weil Form1Activate auch beim Schließen von Form2 ausgeführt wird und du eine Exception bekommst.
Hier der komplette Code, den ich von dir umgeschrieben habe:
Delphi-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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Inifiles;
type TForm1 = class(TForm) procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); private public end;
var Form1: TForm1; Erlaubt: Boolean; implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject); var Ini: TIniFile; Res: String; begin If Erlaubt=True Then Begin Ini:=TIniFile.Create('C:\Programme\Progg-Starter\Configuration\Load_1.ini'); Try Res:=ini.ReadString('LOAD_DESIGN', 'Design_1', res); If 'True'=Res Then Begin Form1.Hide; Form2.Show; End Else Form2.Show; Finally Ini.free; Erlaubt:=False; End; end;
end;
procedure TForm1.FormCreate(Sender: TObject); begin Erlaubt:=True; end;
end. |
Bei mir funktioniert es... ;-)
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!