![]() |
Re: problem mit else nach end
Zitat:
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:
So jetzt kommt das prüfen
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);
Delphi-Quellcode:
Dan das mit den lincks
//Prüft ob RadioButton2 ausgewehlt ist
if RadioButton2.Checked then //Speichert ersten Link
Delphi-Quellcode:
Ein begin ein end
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;
Delphi-Quellcode:
Ein begin ein end
//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;
Delphi-Quellcode:
ein begin ein end
//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;
Delphi-Quellcode:
oh Gemerkt :coder2: *selbst hau*
end // Das end beendet die Prozedur!
else
Delphi-Quellcode:
ein begin ein end
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;
Delphi-Quellcode:
ein begin ein end
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;
Delphi-Quellcode:
ein begin ein endbegin 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;
Delphi-Quellcode:
oh gemerkt
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. 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! |
Re: problem mit else nach end
Liste der Anhänge anzeigen (Anzahl: 1)
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. |
Re: problem mit else nach end
Zitat:
|
Re: problem mit else nach end
Versuch dir mal anzugewöhnen, dass du so anfängst:
Delphi-Quellcode:
und danach den code zwischen den begin und end;
begin
... ... end; die tastenkombination STRG-F9 ist vllt auch ganz interessant, damit kann man frühzeitig fehler erkennen, wenn man es desöfteren benutzt :) |
Re: problem mit else nach end
Zitat:
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. |
Re: problem mit else nach end
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.
|
Re: problem mit else nach end
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). :wink: Aber ich seh grad, dass das wohl nur bis D7 funktioniert. Ich nehmen an, weil alles >D7 das schon selbst und besser kann. |
Re: problem mit else nach end
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 :zwinker: 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? |
Re: problem mit else nach end
Das ist natürlich was anderes. Deswegen ist es hilfreich, wenn man weiß welche Version jemand benutzt.
Ich hab mal bei ![]() Bis dahin hilft dann wohl nur übersichtliches Coden, Kommentare und Augen auf ;-) Nutz doch mal Kommentare:
Delphi-Quellcode:
Ggf. auch nur für die Fehlersuche. Dann fällt dir schnell auf, wo dir ein end fehlt bzw. wo eines zuviel ist.
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. 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. |
Re: problem mit else nach end
Alternativ kann man noch Castalia empfehlen. Das verbindet begin/end-Blöcke mit vertikalen Linien.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz