Ich möchte eine Procedue aufrufen, und bekomme die Fehlermeldung: illegal expression.
Hier die Deklaration: (die mittlere Zeile. )
Code: Alles auswählen
procedure weiche_umst(akt_element:Pdaten_element);
procedure aufzug_umstellen(akt_element:Pdaten_element);
procedure weiche_nach_links(element :Pdaten_element);
Code: Alles auswählen
procedure aufzug_umstellen(akt_element :Pdaten_element);
begin
end;
Code: Alles auswählen
case funktionsnummer of
0: ......
7: //Weiche umstellen
begin
weiche_umst(akt_element);
zeichnen_erforderlich := true;
end;
20:
begin
// funktionsnummer := 0;
aufzug_umstellen(akt_element);
end;
main.pas(10422,25) Fatal: Syntax error, ";" expected but "(" found
Der Aufruf bei 7 funktioniert einwandfrei.
Und hier noch der ganze case-Block, falls da was wichtiges dabei wäre.
Code: Alles auswählen
case funktionsnummer of
0 :
begin
if akt_element^.elementart = k_hallentor then hallentor_manuell(akt_element);
if akt_element^.elementart = k_weiche then weiche_umst(akt_element);
if akt_element^.elementart = k_bue then schranke_manuell(akt_element);
end;
1 : {Ziel Zugstrasse}
begin
if akt_element^.zug_zielfaehig or hilfsaufl then
begin
funktionsnummer := 0;
alle_ziele_loeschen;
akt_element^.ziel_gesetzt := true;
akt_element := elementpuffer;
THzugfahrstr.create(false);
end
else
begin
Statusfeld.text := 'Dieses Element ist nicht als Ziel für Zugfahrten erlaubt (nur Signale)' ;
ShowMessage('Dieses Element ist nicht als Ziel für Zugfahrten erlaubt (nur Signale)');
allgemeiner_timer.enabled := true;
end;
end;
2: {Ziel MMrangierstrasse}
begin
if not akt_element^.rangier_zielfaehig then
begin
showmessage('Das angeklickte Element ist nicht rangierzielfähig !');
exit;
end;
funktionsnummer := 0;
Statusfeld.text := '' ;
alle_ziele_loeschen;
akt_element^.ziel_gesetzt := true;
{ if (akt_element^.P_linkes_element^.Pbz_konto^.loknummer = ' ') and
(akt_element^.P_linkes_element^.Pbz_konto^.kontostand <> 0) then
begin
zugauswahl.FZugauswahl.visible := false;
zugauswahl.FZugauswahl.show;
P_loknummer := P_erste_loknummer;
a := 0;
repeat
begin
if a = loknummernzeile then break;
inc(a);
P_loknummer := P_loknummer^.P_next_loknummer ;
end;
until P_loknummer = nil
end
else
loknummernsuche(akt_element^.P_linkes_element^.Pbz_konto^.loknummer); }
akt_element := elementpuffer;
THrangierstr.create(false);
end;
3:
begin
hallentor_manuell(akt_element);
end;
4: {bz-Kontoberichtigung}
begin
if akt_element^.Pbz_konto = nil then
begin
Showmessage('Das angeklickte Element hat kein belegungszählkonto');
exit;
end ;
bz_korrekturelement :=akt_element;
Achszaehlkorrektur_.close;
Achszaehlkorrektur_.show;
zeichnen_erforderlich := true;
end;
5: //Ziel Hilfsauflösung
begin
funktionsnummer := 1;
Statusfeld.text := '' ;
alle_ziele_loeschen; hilfsaufl := true;
elementpuffer := akt_element;
akt_element^.ziel_gesetzt := true;
end;
6: //Einzelauflösung
begin
with akt_element^ do
begin
If akt_element^.Pbz_konto <> nil then
begin
if fahrtreg[Pbz_konto^.fahrtreg].v_ist =0 then
begin
Pbz_konto^.fahrstrassennummer :=0;
Pbz_konto^.lokal:= false;
fahrtreg[Pbz_konto^.fahrtreg].lokal:= false;
fahrtreg[Pbz_konto^.fahrtreg].anforderungen := 0;
Pbz_konto^.fahrtreg := 0;
hp2markierung := false;
P_signaladresse := nil;
gn := false;
rot1 := ja;
rot2 := ja;
ws := nein;
ge := nein;
if bue <> nil then
begin
if bue^.Pbz_konto^.BUE_Anforderungen >0 then
begin
dec (bue^.Pbz_konto^.BUE_Anforderungen);
if (bue^.Pbz_konto^.BUE_Anforderungen = 0 )then
begin
zwischenadresse := akt_element;
akt_element := akt_element^.bue;
weiche_nach_links(akt_element);
akt_element^.Pbz_konto^.bue_geschlossen:= false;
akt_element := zwischenadresse;
end;
end;
end;
zeichnen_erforderlich := true;
end
else
begin
Showmessage('Fahrzeug fährt noch. Auflösung nicht möglich.');
exit;
end;
end;
end;
end;
7: //Weiche umstellen
begin
weiche_umst(akt_element);
zeichnen_erforderlich := true;
end;
8 : //MMrangierstrasse
begin
if not akt_element^.startfaehig then
begin
Showmessage('Das angeklickte Element ist nicht startfähig !');
Statusfeld.text := 'Das angeklickte Element ist nicht startfähig !';
exit;
end ;
if not akt_element^.rangierstr then
begin
Showmessage('Das angeklickte Element ist für Rangierfahrten nicht zugelassen !');
Statusfeld.text := 'Das angeklickte Element ist für Rangierfahrten nicht zugelassen !';
exit;
end;
funktionsnummer := 2;
elementpuffer := akt_element;
akt_element^.startsignal := true;
Statusfeld.text := 'Ziel anklicken !' ;
end;
9 : //MMZugfahrstrasse
begin
if not akt_element^.startfaehig then
begin
Showmessage('Das angeklickte Element ist nicht startfähig !');
Statusfeld.text := 'Das angeklickte Element ist nicht startfähig !';
exit;
end ;
if not akt_element^.zugfahrstr then
begin
Showmessage('Das angeklickte Element ist nicht für Zugfahrstrassen zugelassen !');
Statusfeld.text := 'Das angeklickte Element ist nicht für Zugfahrstrassen zugelassen !';
exit;
end ;
funktionsnummer := 1;
elementpuffer := akt_element;
akt_element^.startsignal := true;
Statusfeld.text := 'Ziel anklicken !' ;
end;
10: //Hilfsauflösung
begin
if akt_element^.startfaehig = false then
begin
Showmessage('Das angeklickte Element ist nicht startfähig !');
Statusfeld.text := 'Das angeklickte Element ist nicht startfähig !';
exit;
end ;
funktionsnummer := 5; {MMZugfahrstrasse}
elementpuffer := akt_element;
Statusfeld.text := 'Ziel anklicken !' ;
end;
11: {manuelle Schattenbahnhofsausfahrt}
begin
end;
12: {manuelle Schattenbahnhofseinfahrt}
begin
end;
13: {loknummern ändern }
begin
if akt_element^.Pbz_konto = nil then
begin
Showmessage('Das angeklickte Element hat kein Belegungszählkonto');
exit;
end ;
bz_korrekturelement :=akt_element;
achszaehlkorrektur_.show;
zeichnen_erforderlich := true;
end;
14: //Lokalfahrt
lokalfahrt(akt_element);
15: //Entkuppler
if lastshift = [] then entkuppler(akt_element);
16: //Bahnübergang manuell
if lastshift = [] then Schranke_manuell(akt_element);
17: //MMSperrfahrt
begin
if akt_element^.startfaehig = false then
begin
Showmessage('Das angeklickte Element ist nicht startfähig !');
Statusfeld.text := 'Das angeklickte Element ist nicht startfähig !';
exit;
end ;
funktionsnummer := 18; {MMSperrfahrt}
elementpuffer := akt_element;
akt_element^.startsignal := true;
Statusfeld.text := 'Ziel anklicken !' ;
end;
18:
begin
funktionsnummer := 0;
Statusfeld.text := '' ;
alle_ziele_loeschen;
akt_element^.ziel_gesetzt := true;
sperrfahrt_;
end;
19: //Gleis sperren
//lastshift := GetKeyShiftState ;
if lastshift = [] then
// if not(ssCtrl in lastshift) then
gleis_sperren_(akt_element);
20:
begin
// funktionsnummer := 0;
aufzug_umstellen(akt_element);
end;
21:goto editmode;
end;
exit;