Delphi-PRAXiS
Seite 6 von 7   « Erste     456 7      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi problem mit else nach end (https://www.delphipraxis.net/108891-problem-mit-else-nach-end.html)

Deltachaos 21. Feb 2008 14:56

Re: problem mit else nach end
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab heute mal meinem Informatik lehrer vogehalten was ich da zusammengeschrieben hab und der hat mir dan gesagt was ihr mir auch die gantze zeit gesagt habt aber da hab ichs dan verstanden so ist der text richtig:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ColorGrd;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Edit2: TEdit;
    CheckBox1: TCheckBox;
    Edit3: TEdit;
    Edit4: TEdit;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    ComboBox1: TComboBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  F: TextFile;
  clan_tag, name, d_name, ip, port: String;

procedure check_n;
begin
  //Ersätze Sonderzeichen
  name := StringReplace(name, '%', '%25', [rfReplaceAll]);
  name := StringReplace(name, '?', '%3F', [rfReplaceAll]);
  name := StringReplace(name, 'Ä', '%C4', [rfReplaceAll]);
  name := StringReplace(name, 'ä', '%E4', [rfReplaceAll]);
  name := StringReplace(name, 'Ü', '%DC', [rfReplaceAll]);
  name := StringReplace(name, 'ü', '%FC', [rfReplaceAll]);
  name := StringReplace(name, 'Ö', '%D6', [rfReplaceAll]);
  name := StringReplace(name, 'ö', '%F6', [rfReplaceAll]);
  name := StringReplace(name, 'ß', '%DF', [rfReplaceAll]);
  name := StringReplace(name, ' ', '%20', [rfReplaceAll]);
  name := StringReplace(name, ';', '%3B', [rfReplaceAll]);
  name := StringReplace(name, '=', '%3D', [rfReplaceAll]);
  name := StringReplace(name, '"', '%22', [rfReplaceAll]);
  name := StringReplace(name, '(', '%28', [rfReplaceAll]);
  name := StringReplace(name, ')', '%29', [rfReplaceAll]);
  name := StringReplace(name, '.', '%2E', [rfReplaceAll]);
  name := StringReplace(name, ':', '%3A', [rfReplaceAll]);
  name := StringReplace(name, '<', '%3C', [rfReplaceAll]);
  name := StringReplace(name, '>', '%3E', [rfReplaceAll]);
  name := StringReplace(name, '@', '%40', [rfReplaceAll]);
  name := StringReplace(name, '[', '%5B', [rfReplaceAll]);
  name := StringReplace(name, ']', '%5D', [rfReplaceAll]);
  name := StringReplace(name, '\', '%5C', [rfReplaceAll]);
  name := StringReplace(name, '^', '%5E', [rfReplaceAll]);
  name := StringReplace(name, '{', '%7B', [rfReplaceAll]);
  name := StringReplace(name, '}', '%7D', [rfReplaceAll]);
  name := StringReplace(name, '|', '%7C', [rfReplaceAll]);
  name := StringReplace(name, '&', '%26', [rfReplaceAll]);
  name := StringReplace(name, '#', '%23', [rfReplaceAll]);
  //Sonderzeichen wurden ersetzt
end;

procedure check_c;
begin
  //Ersätze Sonderzeichen
  clan_tag := StringReplace(clan_tag, '%', '%25', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '?', '%3F', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, 'Ä', '%C4', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, 'ä', '%E4', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, 'Ü', '%DC', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, 'ü', '%FC', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, 'Ö', '%D6', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, 'ö', '%F6', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, 'ß', '%DF', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, ' ', '%20', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, ';', '%3B', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '=', '%3D', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '"', '%22', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '(', '%28', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, ')', '%29', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '.', '%2E', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, ':', '%3A', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '<', '%3C', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '>', '%3E', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '@', '%40', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '[', '%5B', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, ']', '%5D', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '\', '%5C', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '^', '%5E', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '{', '%7B', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '}', '%7D', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '|', '%7C', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '&', '%26', [rfReplaceAll]);
  clan_tag := StringReplace(clan_tag, '#', '%23', [rfReplaceAll]);
  //Sonderzeichen wurden ersetzt
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Name := edit1.Text;
  Clan_Tag := edit2.Text;
  ip := edit3.text;
  port := edit4.text;

  D_Name := InputBox('Dateiname', 'Bitte Dateinamen eingeben!', 'Link');
  AssignFile(F, d_name + '.txt');
  check_n; //ersätzt Sonderzeichen in var clan_tag
  check_c; //ersätzt Sonderzeichen in var name
  Rewrite(F);

  //Prüft ob RadioButton2 ausgewehlt ist
  if RadioButton2.Checked then
  //Speichert ersten Link
  begin
    if CheckBox1.Checked then
      //Server Banner
      Writeln(F, '[center][url=http://www.gametracker.com/server_info/89.202.196.35:16570/]'
        + '[img]http://cache.www.gametracker.com/server_info/89.202.196.35:16570/'
        + 'b_350x20_C692108-381007-FFFFFF-000000.png[/img][/url][/center]');
  //speichert zweiten Link
    if CheckBox2.Checked then
      //Player Banner
      Writeln(F, '[center][url=http://www.2142-stats.de/'
        + name + '+stats.html][img]http://sigs.2142-stats.com/'
        + name + '_player_31422.png[/img][/url][/center]');
  //speichert dritten link
    if checkBox3.Checked then
      if (Trim(Edit2.Text) <> '') then //Prüft ob edit2 leer ist
        //Player on Server Banner
        //Wen nicht leer
        Writeln(F, '[center][url=http://www.gametracker.com/server/'
          + IP + ':' + port + '/player/' + clan_tag + '%20' + name
          + '/][img]http://cache.www.gametracker.com/player/' + clan_Tag + '%20'
          + name + '/' + IP + ':' + port + '/b_560x95.png[/img][/url][/center]')
      else
        //wen leer
        Writeln(F, '[center][url=http://www.gametracker.com/server/'
          + IP + ':' + port + '/player/' + name + '/][img]http://cache.www.gametracker.com/player/'
          + name + '/' + IP + ':' + port + '/b_560x95.png[/img][/url][/center]')
    end;
    //Prüft ob RadioButton2 ausgewehlt ist
    if RadioButton1.Checked then
    //Speichert ersten Link
    begin
  if form1.CheckBox1.Checked then
    //Server Banner
    Writeln(F, '<p align="center"><a href="http://www.gametracker.com/server_info/'
      + IP + ':' + port + '/"><img border="0" src="http://cache.www.gametracker.com/server_info/'
      + IP + ':' + port + '/b_350x20_C692108-381007-FFFFFF-000000.png"></a></p>');

    if form1.CheckBox2.Checked then
      //Player Banner
      Writeln(F, '<p align="center"><a href="http://www.2142-stats.de/'
        + name + '+stats.html"><img border="0" src="http://sigs.2142-stats.com/'
        + name + '_player_31422.png"></a></p>');

    if form1.checkBox3.Checked then
      if (Trim(form1.Edit2.Text) <> '') then
        //Player on Server Banner
        Writeln(F, '<p align="center"><a href="http://www.gametracker.com/server/'
          + IP + ':' + port + '/player/' + clan_tag + '%20' + name
          + '/"><img border="0" src="http://cache.www.gametracker.com/player/'
          + clan_Tag + '%20' + name + '/' + IP + ':' + port + '/b_560x95.png"></a></p>')
      else
        Writeln(F, '<p align="center"><a href="http://www.gametracker.com/server/'
          + IP + ':' + port + '/player/' + name + '/"><img border="0" src="http://cache.www.gametracker.com/player/'
          + name + '/' + IP + ':' + port +'/b_560x95.png"></a></p>')
end;

  CloseFile(F); //Schliest Datei
  MessageDlg('Datei "' + d_name + '.txt" wurde erstellt', mtInformation, [mbOk], 0);
  close; //Schliest Programm
end;

end.
ich heng das programm noch an

Nuclear-Ping 21. Feb 2008 15:33

Re: problem mit else nach end
 
Fein. :thumb:

Du rückst aber immernoch nicht ordentlich ein:
Delphi-Quellcode:
    //Speichert ersten Link
    begin
  if form1.CheckBox1.Checked then
    //Server Banner
Warum ist das if vor dem übergeordneten begin?

Delphi-Quellcode:
   
          + clan_Tag + '%20' + name + '/' + IP + ':' + port + '/b_560x95.png"></a></p>')
      else
        Writeln(F, '<p align="center"><a href="http://www.gametracker.com/server/'
          + IP + ':' + port + '/player/' + name + '/"><img border="0" src="http://cache.www.gametracker.com/player/'
          + name + '/' + IP + ':' + port +'/b_560x95.png"></a></p>')
end;

  CloseFile(F); //Schliest Datei
Warum steht das end am Anfang der Spalte? Schließt es die Hauptprozedur? Eher nicht ...

Also bitte, so schwer kann das doch nicht sein, dass man hier 4 Seiten lang zur Schau stellen muss, dass die eigenen kognitiven Fähigkeiten so extravagant degeneriert sind oder?

Captnemo 21. Feb 2008 15:38

Re: problem mit else nach end
 
Schon besser, aber es sind immer noch ein paar Schönheitsfehler drin.

Als erstes ist mir das end in Zeile 190 aufgefallen, weil es nicht eingerückt ist. Dann hab ich mal nach oben geschaut, und da ist mir in Zeile 166 aufgefallen, dass das if nach dem begin zu wenig eingerückt ist.

Ich persönlich mache das folgendermaßen. Wenn ich ein Begin setzte, dann schreibe ich das end linksbündig genau darunter. Danach füge ich er den Code dazwischen ein. So kann ich schon mit dem Cursor, wenn ich einfach nur nach unten gehe, das end für ein begin finden.

Desweiteren rate ich zu entsprechend übersichtlicher Programmierung mit viel Kommentaren. Bedenke, dass du deinen Code auch noch lesen und verstehen willst, wenn du mal 2 Jahre nix dran gemacht hast.

DeddyH 21. Feb 2008 15:41

Re: problem mit else nach end
 
Zitat:

Zitat von Captnemo
Wenn ich ein Begin setzte, dann schreibe ich das end linksbündig genau darunter. Danach füge ich er den Code dazwischen ein.

Ich mache das haargenauso, allerdings musste ich dann bei TDE feststellen, dass meine "end"s dann doppelt waren, da die IDE sie per default selbst ergänzt :mrgreen:

Captnemo 21. Feb 2008 15:55

Re: problem mit else nach end
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von Captnemo
Wenn ich ein Begin setzte, dann schreibe ich das end linksbündig genau darunter. Danach füge ich er den Code dazwischen ein.

Ich mache das haargenauso, allerdings musste ich dann bei TDE feststellen, dass meine "end"s dann doppelt waren, da die IDE sie per default selbst ergänzt :mrgreen:

Gut, das ist klar. Durch das CNPack ist das bei mir auch so, dass das end automatisch erzeugt wird. Aber das fällt einem ja sofort ins Auge :cyclops:

DeddyH 21. Feb 2008 16:11

Re: problem mit else nach end
 
Zitat:

Zitat von Captnemo
Aber das fällt einem ja sofort ins Auge :cyclops:

Dazu muss man aber auf den Bildschirm schauen :-D

Neutral General 21. Feb 2008 16:28

Re: problem mit else nach end
 
Hi,

Dann mach ich auch mal mit.. Aber was du dir merken solltest: end beendet nicht die procedure :!: Um eine Procedure zu verlassen muss entweder der Code der procedure vollständig bis zum procedure-end; durchlaufen sein oder du rufst exit; auf.

Hier der Code anständig formatiert! (Ohne Kommentare)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Name := edit1.Text;
  Clan_Tag := edit2.Text;
  ip := edit3.text;
  port := edit4.text;

  D_Name := InputBox('Dateiname', 'Bitte Dateinamen eingeben!', 'Link');
  AssignFile(F, d_name + '.txt');
  check_n;
  check_c;
  Rewrite(F);

  if RadioButton2.Checked then
  begin
    if CheckBox1.Checked then    
      Writeln(F, '[center][url=http://www.gametracker.com/server_info/89.202.196.35:16570/]'
               + '[img]http://cache.www.gametracker.com/server_info/89.202.196.35:16570/'
               + 'b_350x20_C692108-381007-FFFFFF-000000.png[/img][/url][/center]');
    if CheckBox2.Checked then
      Writeln(F, '[center][url=http://www.2142-stats.de/'
                + name + '+stats.html][img]http://sigs.2142-stats.com/'
                + name + '_player_31422.png[/img][/url][/center]');
    if CheckBox3.Checked then
      if (Trim(Edit2.Text) <> '') then
        Writeln(F, '[center][url=http://www.gametracker.com/server/'
          + IP + ':' + port + '/player/' + clan_tag + '%20' + name
          + '/][img]http://cache.www.gametracker.com/player/' + clan_Tag + '%20'
          + name + '/' + IP + ':' + port + '/b_560x95.png[/img][/url][/center]')
      else
        Writeln(F, '[center][url=http://www.gametracker.com/server/'
                 + IP + ':' + port + '/player/' + name
                 + '/][img]http://cache.www.gametracker.com/player/'
                 + name + '/' + IP + ':' + port + '/b_560x95.png[/img][/url][/center]')
  end;

  if RadioButton1.Checked then
  begin
    if CheckBox1.Checked then
      Writeln(F, '<p align="center"><a href="http://www.gametracker.com/server_info/'
               + IP + ':' + port + '/"><img border="0" '
               + 'src="http://cache.www.gametracker.com/server_info/'
               + IP + ':' + port + '/b_350x20_C692108-381007-FFFFFF-000000.png"></a></p>');

    if CheckBox2.Checked then
      Writeln(F, '<p align="center"><a href="http://www.2142-stats.de/'
                + name + '+stats.html"><img border="0" src="http://sigs.2142-stats.com/'
                + name + '_player_31422.png"></a></p>');

    if CheckBox3.Checked then
      if (Trim(form1.Edit2.Text) <> '') then
        Writeln(F, '<p align="center"><a href="http://www.gametracker.com/server/'
                  + IP + ':' + port + '/player/' + clan_tag + '%20' + name
                  + '/"><img border="0" src="http://cache.www.gametracker.com/player/'
                  + clan_Tag + '%20' + name + '/' + IP + ':' + port + '/b_560x95.png"></a></p>')
      else
        Writeln(F, '<p align="center"><a href="http://www.gametracker.com/server/'
                 + IP + ':' + port + '/player/' + name + '/"><img border="0"'
                 + 'src="http://cache.www.gametracker.com/player/'
                 + name + '/' + IP + ':' + port +'/b_560x95.png"></a></p>')
  end;
  CloseFile(F);
  MessageDlg('Datei "' + d_name + '.txt" wurde erstellt', mtInformation, [mbOk], 0);
  close;
end;
Gruß
Neutral General

Deltachaos 21. Feb 2008 18:06

Re: problem mit else nach end
 
Zitat:

Zitat von Neutral General
Hi,

Dann mach ich auch mal mit.. Aber was du dir merken solltest: end beendet nicht die procedure :!: Um eine Procedure zu verlassen muss entweder der Code der procedure vollständig bis zum procedure-end; durchlaufen sein oder du rufst exit; auf.

Hier der Code anständig formatiert! (Ohne Kommentare)

das heist da wohl ich so das so machen:

Delphi-Quellcode:
procedure blabal;
begin
djsklhgklh;
oiohzgsdfhl;
bhrfgsdbgjkdb;
exit;
anstat:

Delphi-Quellcode:
procedure blabal;
begin
djsklhgklh;
oiohzgsdfhl;
bhrfgsdbgjkdb;
end;
???

mkinzler 21. Feb 2008 18:08

Re: problem mit else nach end
 
Es wurde dir schon ein paar mal gesagt: Kein begin ohne end
Am Besten na die Tafel und 1000 mal Schreiben!!!!

Deltachaos 21. Feb 2008 18:15

Re: problem mit else nach end
 
Zitat:

Zitat von mkinzler
Es wurde dir schon ein paar mal gesagt: Kein begin ohne end
Am Besten na die Tafel und 1000 mal Schreiben!!!!

dan wohl so?

Delphi-Quellcode:
procedure hjsdgfjg;
begin
jjbjkdfsgjka;
msdfjhf;
agtdskgfk;
end;
exit;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 Uhr.
Seite 6 von 7   « Erste     456 7      

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