![]() |
Templates mit TurboDelphi
Hallo
Neuer Tag neues Problem :-D Ich habe mir gestern TurboDelphi runtergeladen und ich muss sagen die Tamplates haben mich richtig begeistert. Ich bin dabei mir ein Template selber zu basteln also das immer ein hinterlegter Codeschnipses bei Aufruf des Templates erscheint. Das Template habe ich so gestaltet:
XML-Code:
<?xml version="1.0" encoding="utf-8" ?> <codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates" version="1.0.0"> <template name="search-string" invoke="manual"> <point name="search-string"> <text>search-string</text> <hint>suchen nach einen bestimmten string</hint> </point> <point name="Variable oder Wert"> <text>Variable oder Wert</text> <hint>Wert</hint> </point> <point name="Text der durchsucht werden soll"> <text>Text der durchsucht werden soll</text> <hint>Text</hint> </point> <point name="gesuchter String"> <text>gesuchter String</text> <hint>Search String</hint> </point> <point name="slTmp"> <text>slTmp</text> <hint>TStringList</hint> </point> <point name="sText"> <text>sText</text> <hint>StringVariable</hint> </point> <point name="sSearch"> <text>sSearch</text> <hint>StringVariable</hint> </point> <point name="i"> <text>i</text> <hint>IntegerVariable</hint> </point> <description>string suchen</description> <author>newuser</author> <script language="Delphi" onenter="true" onleave="true"> DeclareVariable(|slTmp|,StringList); DeclareVariable(|sText|,string); DeclareVariable(|sSearch|,string); DeclareVariable(|i|,integer); </script> <code language="Delphi" delimiter="|" ><![CDATA[ |search-string| for |i| := 0 to |Variable oder Wert| -1 do begin |slTmp| := TStringList.Create; slTmp.Clear(); |sText| := ''; |sText| := |Text der durchsucht werden soll|; |sSearch| := |gesuchter String|; while pos(sSearch,sText) <> 0 do begin slTmp.Add(copy(sText,1,pos(sSearch,sText)-1)); delete(sText,1,pos(sSearch,sText)); end; slTmp.Add(sText); if slTmp.Strings[i] = sText Then begin // end else begin MessageDlg('String gefunden',mtInformation, [mbOK], 0); end;//if end;//for ]]> </code> </template> </codetemplate> Wenn ich nun "search-string" eingebe und die Tab-Taste betätige vervollständigt sich dieser Code nur die Variablen "slTmp" und "sSearch" sind falsch deklariert worden eigentlich müsste "slTmp" vom Typ TStringList sein und "sSearch" vom Typ String. Ich hab keine Ahnung woran es liegen könnte denn die Variablen "sText" und "i" werden ja auch richtig Deklariert vielleicht könnt ihr ja weiterhelfen ?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); var slTmp: TObject; //falsch siehe XML-Code sText: string; sSearch: TObject; //falsch siehe XML-Code i: Integer; begin for i := 0 to Wert -1 do begin slTmp := TStringList.Create; slTmp.Clear(); sText := ''; sText := Text der durchsucht werden soll; sSearch := gesuchter String; while pos(sSearch,sText) <> 0 do begin slDat.Add(copy(sText,1,pos(sSearch,sText)-1)); delete(sText,1,pos(sSearch,sText)); end; slTmp.Add(sText); if slTmp.Strings[i] = sText Then begin // end else begin MessageDlg('String gefunden',mtInformation, [mbOK], 0); end;//if end;//for end; Gruß Holger |
Re: Templates mit TurboDelphi
Oha, dein Template war ja der reinste Horror. :P
Schonmal überlegt was passiert wenn man andere Variablenbezeichner eingibt? :zwinker: Hier mal eine überarbeitete Version, klappt wunderbar:
XML-Code:
<?xml version="1.0" encoding="utf-8" ?>
<codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates" version="1.0.0"> <template name="search-string" invoke="manual"> <point name="search-string"> <text>search-string</text> <hint>suchen nach einen bestimmten string</hint> </point> <point name="Variable oder Wert"> <text>Variable oder Wert</text> <hint>Wert</hint> </point> <point name="TStringList"> <text>TStringList</text> <hint>TStringList</hint> </point> <point name="Text der durchsucht werden soll"> <text>Text der durchsucht werden soll</text> <hint>Text</hint> </point> <point name="gesuchter String"> <text>gesuchter String</text> <hint>Search String</hint> </point> <point name="slTmp"> <text>slTmp</text> <hint>TStringList</hint> </point> <point name="sText"> <text>sText</text> <hint>StringVariable</hint> </point> <point name="sSearch"> <text>sSearch</text> <hint>StringVariable</hint> </point> <point name="i"> <text>i</text> <hint>IntegerVariable</hint> </point> <description>string suchen</description> <author>newuser</author> <script language="Delphi" onenter="true" onleave="true"> DeclareVariable(|slTmp|,|TStringList|); DeclareVariable(|sText|,string); DeclareVariable(|sSearch|,string); DeclareVariable(|i|,integer); </script> <code language="Delphi" delimiter="|" ><![CDATA[ for |i| := 0 to |Variable oder Wert| -1 do begin |slTmp| := |TStringList|.Create; |slTmp|.Clear(); |sText| := '|Text der durchsucht werden soll|'; |sSearch| := '|gesuchter String|'; while pos(|sSearch|,|sText|) <> 0 do begin |slTmp|.Add(copy(|sText|,1,pos(|sSearch|,|sText|)-1)); delete(|sText|,1,pos(|sSearch|,|sText|)); end; |slTmp|.Add(|sText|); if |slTmp|.Strings[i] = |sText| Then begin // end else begin MessageDlg('String gefunden',mtInformation, [mbOK], 0); end;//if end;//for ]]> </code> </template> </codetemplate> |
Re: Templates mit TurboDelphi
Zitat:
Danke für deine Hilfe |
Re: Templates mit TurboDelphi
[quote]
Delphi-Quellcode:
Was wird denn das? Hat eine gerade neu erstelle Stringliste etwa schon einen Inhalt, den man mit Clear löschen muss? Wenn ich einem String einen neuen Wert zuweise, muss ich da den vorher String mit dem Leerstring vorinitialisieren?
slTmp := TStringList.Create;
slTmp.Clear(); sText := ''; sText := Text der durchsucht werden soll; Das mal abgesehen, von den zwei völlig unnötigen Pos() aufrufen, die das ganze nur verlangsamen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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