AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

problem mit else nach end

Ein Thema von Deltachaos · begonnen am 20. Feb 2008 · letzter Beitrag vom 22. Feb 2008
Antwort Antwort
Seite 5 von 7   « Erste     345 67      
Benutzerbild von Deltachaos
Deltachaos

Registriert seit: 20. Feb 2008
Ort: Berlin
195 Beiträge
 
Delphi 7 Personal
 
#41

Re: problem mit else nach end

  Alt 20. Feb 2008, 22:32
Zitat von mkinzler:
Grundalgen: Zu jedem begin gehörte ein end und zu jedem end ein begin
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;
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; //ersätzt Sonderzeichen in var clan_tag
  check_c; //ersätzt Sonderzeichen in var name
  Rewrite(F);
So jetzt kommt das prüfen

Delphi-Quellcode:
  //Prüft ob RadioButton2 ausgewehlt ist
  if RadioButton2.Checked then
  //Speichert ersten Link
Dan das mit den lincks

Delphi-Quellcode:
  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]');
  end;
Ein begin ein end
Delphi-Quellcode:
  //speichert zweiten Link
  begin
    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]');
  end;
Ein begin ein end
Delphi-Quellcode:
  //speichert dritten link
  begin
    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;
ein begin ein end
Delphi-Quellcode:
end // Das end beendet die Prozedur!
else
oh Gemerkt *selbst hau*
Delphi-Quellcode:
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>');
end;
ein begin ein end
Delphi-Quellcode:
  begin
    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>');
  end;
ein begin ein end
Delphi-Quellcode:
 
  begin
    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;
ein begin ein end
Delphi-Quellcode:
end; // und noch ein end zu viel


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

end.
oh gemerkt

jetzt habe ich alle überflüssigen ends entfernt und er gibt mir immernoch die meldung aus das mir ne end fehlt
das mit dem turial mach ich dan morgen.

also gute nacht. und euch noch Carpe Noctem!
Maximilian Ruta
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#42

Re: problem mit else nach end

  Alt 20. Feb 2008, 22:41
Hehe, dieser Thread fäng an mich zu belustigen Hätt nicht gedacht, dass man um ein solches Thema so viel diskutieren kann

Also hier mal ein kleiner Tipp von mir: Lad dir ggf. mal das CNPack runter. Da gibt's ne IDE-Erweiterung die, neben vielen anderen nützlichen Helfern, auch eine Syntaxhervorhebung beinhaltet. D.h. es werden zusammengehörige begin und ends farbig hervorgehoben. Und verschachtelte dann auch in unterschiedlichen Farben. Mit dieser Hilfe erkennt man solche Fehler SOFORT. Auch zusammengehörende Klammern, werden, sobald der Cursor drauf steht, entsprechend hervorgehoben.
Und wenn dir das mit begin und end bis dahin noch nicht klar ist, so ist es das spätestens wenn du das dann siehst.

Ich hab mal ein Bild als Beispiel beigepackt. (Der Code ist aber reine Fantasie).

So, und dann finde ich, dass begin und ends auch nur Sinn machen, wenn sie einen Zweck erfüllen. Ansonsten taugen Kommentar weit mehr.
Mit überflüssigen begin und ends, ohne Bedingung kann man die Sache auch unnötig überflüssig machen.
Und wenn ich dann noch derart lange, zusammengesetzte Strings habe, und eine Fehler im Code, dann teile ich mir die in einzelne Zeilen und lege die erste einmal in eine Variable. Später, wenn alles funzt, kann ich das ja immer noch wieder rückgängig mache.
Denn auch solche Mamutzeilen tragen wenig zur Übersichtlichkeit bei.
Miniaturansicht angehängter Grafiken
formatbeispiel_162.jpg  
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#43

Re: problem mit else nach end

  Alt 20. Feb 2008, 23:10
Zitat von Captnemo:
Hehe, dieser Thread fäng an mich zu belustigen Lad dir ggf. mal das CNPack runter. Da gibt's ne IDE-Erweiterung die, neben vielen anderen nützlichen Helfern, auch eine Syntaxhervorhebung beinhaltet. D.h. es werden zusammengehörige begin und ends farbig hervorgehoben.
Was/Wo muss ich da einstellen?
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
(Gast)

n/a Beiträge
 
#44

Re: problem mit else nach end

  Alt 20. Feb 2008, 23:29
Versuch dir mal anzugewöhnen, dass du so anfängst:

Delphi-Quellcode:
begin
...
...
end;
und danach den code zwischen den begin und end;
die tastenkombination STRG-F9 ist vllt auch ganz interessant, damit kann man frühzeitig fehler erkennen, wenn man es desöfteren benutzt
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#45

Re: problem mit else nach end

  Alt 20. Feb 2008, 23:34
Zitat von dominikkv:
Was/Wo muss ich da einstellen?
Ähm.....was ist das jetzt für eine Frage?
Hast du mal danach gegoogelt?
Hast du dir die Homepage mal angeschaut?
Hast du dir den CNPack-Wizard runtergeladen?
Und auch installiert?
Welche Einstellung ist dir nicht klar?

Entschuldige die rüde Antwort, aber wenn ich mir die Mühe machen soll, dir zu schreiben wie das geht, solltest du dir die Mühe machen, deine Fragen genauer zu formulieren und das was du schon gemacht hast auch darzustellen. Und ggf. auch im Internet mal ein bisschen zu lesen.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#46

Re: problem mit else nach end

  Alt 21. Feb 2008, 01:23
Naja, ich vermute mal er will wissen wo man beim CNPack einstellen muss, dass er die Begin/Ends passend farblich hervor hebt, weil das ist keine Defaultoption von CNPack.
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#47

Re: problem mit else nach end

  Alt 21. Feb 2008, 07:58
Also wenn ich mir den CNPack-Wizard runterlade, ihn installiere, dann ist bei mir das Syntax-Highlighting standardmäßig aktiviert.
Ansonsten kann man im CNPack-Menu unter IDE Enhancements Settings -> Source Highlight Enhancements schauen (Und das hab ich ohne Handbuch, als nur durch mal klicken in nicht mehr als 5 Sekunden herausgefunden).

Aber ich seh grad, dass das wohl nur bis D7 funktioniert. Ich nehmen an, weil alles >D7 das schon selbst und besser kann.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#48

Re: problem mit else nach end

  Alt 21. Feb 2008, 08:08
Ja, ich meine das farblich hervorgehobene begin..end

Ich benutze das cnPack schon ein paar Monate, dass das standartmäßig aktiviert ist müsste mir aufgefallen sein
Und natürlich hab ich selbst erstmal in den Einstellungen gesucht, aber nix gefunden (kein Wunder, den Punkt Source Highlight Enhancements gibts bei mir nicht).
Das heißt wohl das dieses Feature in D2007 nicht mehr unterstützt wird?
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#49

Re: problem mit else nach end

  Alt 21. Feb 2008, 08:36
Das ist natürlich was anderes. Deswegen ist es hilfreich, wenn man weiß welche Version jemand benutzt.
Ich hab mal bei CNPack nachgelesen. Tatsächlich wird das nur bei D567 unterstützt. Warum wird dort aber nicht erwähnt. Vielleicht arbeiten die noch dran, und das kommt in einem späteren Release.

Bis dahin hilft dann wohl nur übersichtliches Coden, Kommentare und Augen auf

Nutz doch mal Kommentare:
Delphi-Quellcode:
begin // 1.
 if x=y then begin // 2.
   blabla
   balbal
   Case x of //3.
    1: begin //4.
         Edit1.Text:='1';
       end; //4.
    2: Edit1.Text:='2';
   end; //3.
 end; //2.
end; //1.
Ggf. auch nur für die Fehlersuche. Dann fällt dir schnell auf, wo dir ein end fehlt bzw. wo eines zuviel ist.
Ansonste gilt natürlich lesen. Denn nur wenn man die Grundlagen solcher Dinge verstanden hat, ist man auch in der Lage seine Fehler zu finden und zu verstehen.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#50

Re: problem mit else nach end

  Alt 21. Feb 2008, 09:23
Alternativ kann man noch Castalia empfehlen. Das verbindet begin/end-Blöcke mit vertikalen Linien.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 7   « Erste     345 67      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 Uhr.
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