├── .gitignore ├── LICENSE ├── README.md ├── assets └── images │ ├── string builder enumerator.png │ ├── string builder using adapter.png │ └── string builder.png ├── builds ├── TcDynStringKit_1.0.1.1.library └── TcDynStringKit_1.0.2.2.library └── src ├── TwinCAT Dynamic String Kit.sln └── TwinCAT Dynamic String Kit ├── TcDynStringKit ├── DUTs │ ├── Alias │ │ ├── T_Char.TcDUT │ │ ├── T_LongString.TcDUT │ │ ├── T_ShortString.TcDUT │ │ ├── T_Size.TcDUT │ │ └── T_WhitespaceLocation.TcDUT │ └── Enums │ │ └── E_WhitespaceLocation.TcTLEO ├── ITFs │ ├── Adapters │ │ ├── I_ReadOnlyLineBuilderAdapter.TcIO │ │ ├── I_ReadOnlyStringBuilderAdapter.TcIO │ │ └── I_ReadOnlyWordBuilderAdapter.TcIO │ ├── Builders │ │ ├── I_LineBuilder.TcIO │ │ ├── I_StringBuilder.TcIO │ │ └── I_WordBuilder.TcIO │ ├── Common │ │ └── I_QueryInterface.TcIO │ └── Enumerators │ │ ├── I_Disposable.TcIO │ │ ├── I_Enumerable.TcIO │ │ └── I_Enumerator.TcIO ├── LineIDs.dbg ├── PARAMs │ └── GVLs │ │ └── Param_Configurations.TcGVL ├── POUs │ ├── Examples │ │ ├── P_AdapterExample.TcPOU │ │ ├── P_EnumeratorExample.TcPOU │ │ └── P_StringBuilderExample.TcPOU │ ├── Function Blocks │ │ ├── Adapters │ │ │ └── FB_ReadOnlyStringBuilderAdapter.TcPOU │ │ ├── Builders │ │ │ └── FB_StringBuilder.TcPOU │ │ ├── Enumerators │ │ │ ├── FB_AbstractStringEnumerator.TcPOU │ │ │ └── FB_StringBuilderEnumerator.TcPOU │ │ └── _Internal │ │ │ └── FB_Free.TcPOU │ ├── Functions │ │ ├── F_AnyStringLength.TcPOU │ │ ├── F_AnyToString.TcPOU │ │ ├── F_BYTETOCHAR.TcPOU │ │ ├── F_CHARTOBYTE.TcPOU │ │ ├── F_ISBOOL.TcPOU │ │ ├── F_ISDIGIT.TcPOU │ │ ├── F_ISLTIME.TcPOU │ │ ├── F_ISSPACE.TcPOU │ │ ├── F_ISTIME.TcPOU │ │ ├── F_IsAnyToStringCompatable.TcPOU │ │ ├── F_IsNumber.TcPOU │ │ ├── F_IsSignedInteger.TcPOU │ │ ├── F_IsUnsignedInteger.TcPOU │ │ ├── F_MALLOCSTR.TcPOU │ │ ├── F_MEMCPY.TcPOU │ │ ├── F_MEMMOVE.TcPOU │ │ ├── F_STRLCAT.TcPOU │ │ ├── F_STRLCPY.TcPOU │ │ ├── F_STRLEN.TcPOU │ │ ├── F_STRNCMP.TcPOU │ │ ├── F_STRSTR.TcPOU │ │ ├── F_STRTOANY.TcPOU │ │ ├── F_StringBuilder.TcPOU │ │ ├── F_TOLOWER.TcPOU │ │ ├── F_TOUPPER.TcPOU │ │ └── F_TRIMWHITESPACE.TcPOU │ └── MAIN.TcPOU ├── PlcTask.TcTTO ├── Project Information │ ├── F_GetCompany.TcPOU │ ├── F_GetTitle.TcPOU │ └── F_GetVersion.TcPOU ├── TcDynStringKit.plcproj ├── Version │ └── Global_Version.TcGVL └── _Libraries │ └── beckhoff automation gmbh │ ├── tc2_standard │ ├── 3.3.3.0 │ │ └── tc2_standard.compiled-library │ └── 3.4.5.0 │ │ └── tc2_standard.compiled-library │ ├── tc2_system │ ├── 3.4.26.0 │ │ └── tc2_system.compiled-library │ ├── 3.5.3.0 │ │ └── tc2_system.compiled-library │ └── 3.6.4.0 │ │ └── tc2_system.compiled-library │ ├── tc2_utilities │ ├── 3.3.54.0 │ │ └── tc2_utilities.compiled-library │ ├── 3.4.8.0 │ │ └── tc2_utilities.compiled-library │ └── 3.8.1.0 │ │ └── tc2_utilities.compiled-library │ └── tc3_module │ ├── 3.3.21.0 │ └── tc3_module.compiled-library │ ├── 3.3.23.0 │ └── tc3_module.compiled-library │ └── 3.4.5.0 │ └── tc3_module.compiled-library ├── TcDynStringKitTest ├── POUs │ └── MAIN.TcPOU ├── TcDynStringKitTest.plcproj └── _Libraries │ ├── beckhoff automation gmbh │ ├── tc2_standard │ │ ├── 3.3.3.0 │ │ │ └── tc2_standard.compiled-library │ │ └── 3.4.5.0 │ │ │ └── tc2_standard.compiled-library │ ├── tc2_system │ │ ├── 3.4.26.0 │ │ │ └── tc2_system.compiled-library │ │ ├── 3.5.3.0 │ │ │ └── tc2_system.compiled-library │ │ └── 3.6.4.0 │ │ │ └── tc2_system.compiled-library │ ├── tc2_utilities │ │ ├── 3.3.54.0 │ │ │ └── tc2_utilities.compiled-library │ │ ├── 3.4.8.0 │ │ │ └── tc2_utilities.compiled-library │ │ └── 3.8.1.0 │ │ │ └── tc2_utilities.compiled-library │ └── tc3_module │ │ ├── 3.3.21.0 │ │ └── tc3_module.compiled-library │ │ ├── 3.3.23.0 │ │ └── tc3_module.compiled-library │ │ └── 3.4.5.0 │ │ └── tc3_module.compiled-library │ ├── system │ ├── base interfaces │ │ └── 3.5.2.0 │ │ │ └── base_itfs.compiled-library │ ├── cmperrors2 interfaces │ │ └── 3.5.12.0 │ │ │ └── cmperrors2_itfs.compiled-library │ ├── sysdir │ │ └── 3.5.12.0 │ │ │ └── sysdir.compiled-library │ ├── sysfile │ │ └── 3.5.9.0 │ │ │ └── sysfile.compiled-library │ └── systypes2 interfaces │ │ └── 3.5.4.0 │ │ └── systypes_itfs.compiled-library │ └── www.tcunit.org │ └── tcunit │ └── 1.2.0.0 │ └── tcunit.library ├── TwinCAT Dynamic String Kit.tsproj └── TwinCAT Dynamic String Kit.tsproj.bak /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Ignore Twincat non-source files ## 5 | 6 | ### User-specific files (from 4018 tmc should be ignored) ### 7 | *.~u 8 | *.tpy 9 | *.tmc 10 | *.suo 11 | *.user 12 | *.orig 13 | TrialLicense.tclrs 14 | 15 | ### Build results ### 16 | _Boot/ 17 | _CompileInfo/ 18 | .engineering_servers/ 19 | *.compileinfo 20 | *.bootinfo 21 | *.bootinfo_guids 22 | 23 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 24 | 25 | # User-specific files 26 | *.rsuser 27 | *.suo 28 | *.user 29 | *.userosscache 30 | *.sln.docstates 31 | 32 | # User-specific files (MonoDevelop/Xamarin Studio) 33 | *.userprefs 34 | 35 | # Mono auto generated files 36 | mono_crash.* 37 | 38 | # Build results 39 | [Dd]ebug/ 40 | [Dd]ebugPublic/ 41 | [Rr]elease/ 42 | [Rr]eleases/ 43 | x64/ 44 | x86/ 45 | [Aa][Rr][Mm]/ 46 | [Aa][Rr][Mm]64/ 47 | bld/ 48 | [Bb]in/ 49 | [Oo]bj/ 50 | [Ll]og/ 51 | [Ll]ogs/ 52 | 53 | # Visual Studio 2015/2017 cache/options directory 54 | .vs/ 55 | # Uncomment if you have tasks that create the project's static files in wwwroot 56 | #wwwroot/ 57 | 58 | # Visual Studio 2017 auto generated files 59 | Generated\ Files/ 60 | 61 | # MSTest test Results 62 | [Tt]est[Rr]esult*/ 63 | [Bb]uild[Ll]og.* 64 | 65 | # NUnit 66 | *.VisualState.xml 67 | TestResult.xml 68 | nunit-*.xml 69 | 70 | # Build Results of an ATL Project 71 | [Dd]ebugPS/ 72 | [Rr]eleasePS/ 73 | dlldata.c 74 | 75 | # Benchmark Results 76 | BenchmarkDotNet.Artifacts/ 77 | 78 | # .NET Core 79 | project.lock.json 80 | project.fragment.lock.json 81 | artifacts/ 82 | 83 | # StyleCop 84 | StyleCopReport.xml 85 | 86 | # Files built by Visual Studio 87 | *_i.c 88 | *_p.c 89 | *_h.h 90 | *.ilk 91 | *.meta 92 | *.obj 93 | *.iobj 94 | *.pch 95 | *.pdb 96 | *.ipdb 97 | *.pgc 98 | *.pgd 99 | *.rsp 100 | *.sbr 101 | *.tlb 102 | *.tli 103 | *.tlh 104 | *.tmp 105 | *.tmp_proj 106 | *_wpftmp.csproj 107 | *.log 108 | *.vspscc 109 | *.vssscc 110 | .builds 111 | *.pidb 112 | *.svclog 113 | *.scc 114 | 115 | # Chutzpah Test files 116 | _Chutzpah* 117 | 118 | # Visual C++ cache files 119 | ipch/ 120 | *.aps 121 | *.ncb 122 | *.opendb 123 | *.opensdf 124 | *.sdf 125 | *.cachefile 126 | *.VC.db 127 | *.VC.VC.opendb 128 | 129 | # Visual Studio profiler 130 | *.psess 131 | *.vsp 132 | *.vspx 133 | *.sap 134 | 135 | # Visual Studio Trace Files 136 | *.e2e 137 | 138 | # TFS 2012 Local Workspace 139 | $tf/ 140 | 141 | # Guidance Automation Toolkit 142 | *.gpState 143 | 144 | # ReSharper is a .NET coding add-in 145 | _ReSharper*/ 146 | *.[Rr]e[Ss]harper 147 | *.DotSettings.user 148 | 149 | # TeamCity is a build add-in 150 | _TeamCity* 151 | 152 | # DotCover is a Code Coverage Tool 153 | *.dotCover 154 | 155 | # AxoCover is a Code Coverage Tool 156 | .axoCover/* 157 | !.axoCover/settings.json 158 | 159 | # Visual Studio code coverage results 160 | *.coverage 161 | *.coveragexml 162 | 163 | # NCrunch 164 | _NCrunch_* 165 | .*crunch*.local.xml 166 | nCrunchTemp_* 167 | 168 | # MightyMoose 169 | *.mm.* 170 | AutoTest.Net/ 171 | 172 | # Web workbench (sass) 173 | .sass-cache/ 174 | 175 | # Installshield output folder 176 | [Ee]xpress/ 177 | 178 | # DocProject is a documentation generator add-in 179 | DocProject/buildhelp/ 180 | DocProject/Help/*.HxT 181 | DocProject/Help/*.HxC 182 | DocProject/Help/*.hhc 183 | DocProject/Help/*.hhk 184 | DocProject/Help/*.hhp 185 | DocProject/Help/Html2 186 | DocProject/Help/html 187 | 188 | # Click-Once directory 189 | publish/ 190 | 191 | # Publish Web Output 192 | *.[Pp]ublish.xml 193 | *.azurePubxml 194 | # Note: Comment the next line if you want to checkin your web deploy settings, 195 | # but database connection strings (with potential passwords) will be unencrypted 196 | *.pubxml 197 | *.publishproj 198 | 199 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 200 | # checkin your Azure Web App publish settings, but sensitive information contained 201 | # in these scripts will be unencrypted 202 | PublishScripts/ 203 | 204 | # NuGet Packages 205 | *.nupkg 206 | # NuGet Symbol Packages 207 | *.snupkg 208 | # The packages folder can be ignored because of Package Restore 209 | **/[Pp]ackages/* 210 | # except build/, which is used as an MSBuild target. 211 | !**/[Pp]ackages/build/ 212 | # Uncomment if necessary however generally it will be regenerated when needed 213 | #!**/[Pp]ackages/repositories.config 214 | # NuGet v3's project.json files produces more ignorable files 215 | *.nuget.props 216 | *.nuget.targets 217 | 218 | # Microsoft Azure Build Output 219 | csx/ 220 | *.build.csdef 221 | 222 | # Microsoft Azure Emulator 223 | ecf/ 224 | rcf/ 225 | 226 | # Windows Store app package directories and files 227 | AppPackages/ 228 | BundleArtifacts/ 229 | Package.StoreAssociation.xml 230 | _pkginfo.txt 231 | *.appx 232 | *.appxbundle 233 | *.appxupload 234 | 235 | # Visual Studio cache files 236 | # files ending in .cache can be ignored 237 | *.[Cc]ache 238 | # but keep track of directories ending in .cache 239 | !?*.[Cc]ache/ 240 | 241 | # Others 242 | ClientBin/ 243 | ~$* 244 | *~ 245 | *.dbmdl 246 | *.dbproj.schemaview 247 | *.jfm 248 | *.pfx 249 | *.publishsettings 250 | orleans.codegen.cs 251 | 252 | # Including strong name files can present a security risk 253 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 254 | #*.snk 255 | 256 | # Since there are multiple workflows, uncomment next line to ignore bower_components 257 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 258 | #bower_components/ 259 | 260 | # RIA/Silverlight projects 261 | Generated_Code/ 262 | 263 | # Backup & report files from converting an old project file 264 | # to a newer Visual Studio version. Backup files are not needed, 265 | # because we have git ;-) 266 | _UpgradeReport_Files/ 267 | Backup*/ 268 | UpgradeLog*.XML 269 | UpgradeLog*.htm 270 | ServiceFabricBackup/ 271 | *.rptproj.bak 272 | 273 | # SQL Server files 274 | *.mdf 275 | *.ldf 276 | *.ndf 277 | 278 | # Business Intelligence projects 279 | *.rdl.data 280 | *.bim.layout 281 | *.bim_*.settings 282 | *.rptproj.rsuser 283 | *- [Bb]ackup.rdl 284 | *- [Bb]ackup ([0-9]).rdl 285 | *- [Bb]ackup ([0-9][0-9]).rdl 286 | 287 | # Microsoft Fakes 288 | FakesAssemblies/ 289 | 290 | # GhostDoc plugin setting file 291 | *.GhostDoc.xml 292 | 293 | # Node.js Tools for Visual Studio 294 | .ntvs_analysis.dat 295 | node_modules/ 296 | 297 | # Visual Studio 6 build log 298 | *.plg 299 | 300 | # Visual Studio 6 workspace options file 301 | *.opt 302 | 303 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 304 | *.vbw 305 | 306 | # Visual Studio LightSwitch build output 307 | **/*.HTMLClient/GeneratedArtifacts 308 | **/*.DesktopClient/GeneratedArtifacts 309 | **/*.DesktopClient/ModelManifest.xml 310 | **/*.Server/GeneratedArtifacts 311 | **/*.Server/ModelManifest.xml 312 | _Pvt_Extensions 313 | 314 | # Paket dependency manager 315 | .paket/paket.exe 316 | paket-files/ 317 | 318 | # FAKE - F# Make 319 | .fake/ 320 | 321 | # CodeRush personal settings 322 | .cr/personal 323 | 324 | # Python Tools for Visual Studio (PTVS) 325 | __pycache__/ 326 | *.pyc 327 | 328 | # Cake - Uncomment if you are using it 329 | # tools/** 330 | # !tools/packages.config 331 | 332 | # Tabs Studio 333 | *.tss 334 | 335 | # Telerik's JustMock configuration file 336 | *.jmconfig 337 | 338 | # BizTalk build output 339 | *.btp.cs 340 | *.btm.cs 341 | *.odx.cs 342 | *.xsd.cs 343 | 344 | # OpenCover UI analysis results 345 | OpenCover/ 346 | 347 | # Azure Stream Analytics local run output 348 | ASALocalRun/ 349 | 350 | # MSBuild Binary and Structured Log 351 | *.binlog 352 | 353 | # NVidia Nsight GPU debugger configuration file 354 | *.nvuser 355 | 356 | # MFractors (Xamarin productivity tool) working folder 357 | .mfractor/ 358 | 359 | # Local History for Visual Studio 360 | .localhistory/ 361 | 362 | # BeatPulse healthcheck temp database 363 | healthchecksdb 364 | 365 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 366 | MigrationBackup/ 367 | 368 | # Ionide (cross platform F# VS Code tools) working folder 369 | .ionide/ 370 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Goodwill Mzumala 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TwinCAT Dynamic String Kit 2 | 3 | A library that provides tools for working with dynamic strings in TwinCAT. It includes a comprehensive string builder with string enumeration and a read-only string builder adapter. Additionally, there are several C-style string functions, such as `isdigit(...)`, `strstr(...)`, `strlcpy(...)`, `isspace(...)`, and more. There are also functions for converting `ANY` to `STRING` and `STRING` to `ANY`. 4 | 5 | # Examples 6 | 7 | Working with the string builder. 8 | 9 | **Declarations:** 10 | ```ST 11 | VAR 12 | bStart : BOOL; 13 | nLn1, nLn2 : T_Size; 14 | sValue1, sValue2 : STRING(255); 15 | pString : POINTER TO STRING; 16 | fbStringBuilder1, 17 | fbStringBuilder2 : FB_StringBuilder; 18 | END_VAR 19 | ``` 20 | 21 | **Implementation:** 22 | ```ST 23 | IF bStart THEN 24 | bStart := FALSE; 25 | fbStringBuilder2 26 | .Append(' I hate cats.') 27 | .GetBuffer(pString); 28 | 29 | fbStringBuilder1 30 | .Clear() 31 | .Append(' I love cats.') 32 | .Append(' I love dogs.') 33 | .AppendBuffer(pString) 34 | .BTrim() 35 | .GetLength(Length => nLn1) 36 | .Replace('cats','dogs',TRUE) 37 | .Insert(nLn1, ' Anaconda! ') 38 | .Split(nLn1,100, fbStringBuilder2.Append(' Tigers are cats.')) 39 | .GetLength(Length => nLn1); 40 | 41 | sValue1 := fbStringBuilder1.ToUppercase().GetString(); 42 | sValue2 := fbStringBuilder2 43 | .ToLowercase() 44 | .BTrim() 45 | .GetString(); 46 | 47 | nLn2 := Tc2_Standard.LEN(sValue1); 48 | __DELETE(pString); 49 | END_IF 50 | ``` 51 | 52 | **Output:** 53 | 54 | ![string builder](./assets/images/string%20builder.png) 55 | 56 | --- 57 | 58 | Working with the read-only adapter. 59 | 60 | **Declarations:** 61 | ```ST 62 | VAR 63 | bStart : BOOL; 64 | sValue : STRING(255); 65 | nPos : T_Size; 66 | tTime : TIME := TIME(); 67 | tTime2 : TIME; 68 | fbStringBuilder : FB_StringBuilder; 69 | fbReadOnlySB : FB_ReadOnlyStringBuilderAdapter; 70 | ipReadOnlySB : I_ReadOnlyStringBuilderAdapter; 71 | END_VAR 72 | ``` 73 | 74 | **Implementation:** 75 | ```ST 76 | fbReadOnlySB(ipStringBuilder := fbStringBuilder); 77 | ipReadOnlySB := fbReadOnlySB; 78 | 79 | IF bStart THEN 80 | bStart := FALSE; 81 | fbStringBuilder 82 | .Clear() 83 | .Append(' I love cats.') 84 | .Append('The time is: ').AppendAny(tTime).Append('.') 85 | .Append(' ') 86 | .BTrim(); 87 | END_IF 88 | 89 | sValue := ipReadOnlySB 90 | .Search('T#', 0, Position => nPos) 91 | .CopySubstringTo(nPos, tc2_Standard.LEN(TO_STRING(tTime)), tTime2) 92 | .GetString(); 93 | ``` 94 | 95 | **Output:** 96 | 97 | ![string builder using an adapter](./assets/images/string%20builder%20using%20adapter.png) 98 | 99 | --- 100 | 101 | Working with the enumerator. 102 | 103 | **Declarations:** 104 | ```ST 105 | VAR 106 | bStart : BOOL; 107 | sValue : STRING(255); 108 | dtTime : DT := DT#2023-5-8-12:55:23; 109 | fbStringBuilder1, 110 | fbStringBuilder2 : FB_StringBuilder; 111 | ipEnumerator : I_Enumerator; 112 | END_VAR 113 | ``` 114 | 115 | **Implementation:** 116 | ```ST 117 | IF bStart THEN 118 | bStart := FALSE; 119 | 120 | fbStringBuilder1 121 | .Clear() 122 | .Append(' I love cats.') 123 | .Append('The time is: ').AppendAny(dtTime).Append('.') 124 | .BTrim(); 125 | 126 | ipEnumerator := fbStringBuilder1.GetEnumerator(); 127 | WHILE ipEnumerator.Next() DO 128 | fbStringBuilder2.Append(ipEnumerator.Current); 129 | END_WHILE 130 | 131 | sValue := fbStringBuilder2.GetString(); 132 | END_IF 133 | ``` 134 | 135 | **Output:** 136 | 137 | ![string builder enumerator](./assets/images/string%20builder%20enumerator.png) 138 | 139 | 140 | # ⚠ Important ⚠ 141 | This project is still in development. There's a lot of work and testing ahead. Changes to functionality may occur in the future. 142 | -------------------------------------------------------------------------------- /assets/images/string builder enumerator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/assets/images/string builder enumerator.png -------------------------------------------------------------------------------- /assets/images/string builder using adapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/assets/images/string builder using adapter.png -------------------------------------------------------------------------------- /assets/images/string builder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/assets/images/string builder.png -------------------------------------------------------------------------------- /builds/TcDynStringKit_1.0.1.1.library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/builds/TcDynStringKit_1.0.1.1.library -------------------------------------------------------------------------------- /builds/TcDynStringKit_1.0.2.2.library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/builds/TcDynStringKit_1.0.2.2.library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # TcXaeShell Solution File, Format Version 11.00 4 | VisualStudioVersion = 15.0.28307.1300 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{B1E792BE-AA5F-4E3C-8C82-674BF9C0715B}") = "TwinCAT Dynamic String Kit", "TwinCAT Dynamic String Kit\TwinCAT Dynamic String Kit.tsproj", "{3044807D-60E3-46E8-998F-C321D2A4A40D}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|TwinCAT CE7 (ARMV7) = Debug|TwinCAT CE7 (ARMV7) 11 | Debug|TwinCAT OS (ARMT2) = Debug|TwinCAT OS (ARMT2) 12 | Debug|TwinCAT RT (x64) = Debug|TwinCAT RT (x64) 13 | Debug|TwinCAT RT (x86) = Debug|TwinCAT RT (x86) 14 | Release|TwinCAT CE7 (ARMV7) = Release|TwinCAT CE7 (ARMV7) 15 | Release|TwinCAT OS (ARMT2) = Release|TwinCAT OS (ARMT2) 16 | Release|TwinCAT RT (x64) = Release|TwinCAT RT (x64) 17 | Release|TwinCAT RT (x86) = Release|TwinCAT RT (x86) 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) 21 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) 22 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) 23 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) 24 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) 25 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) 26 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) 27 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) 28 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) 29 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) 30 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) 31 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) 32 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) 33 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) 34 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) 35 | {3044807D-60E3-46E8-998F-C321D2A4A40D}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) 36 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) 37 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) 38 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) 39 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) 40 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) 41 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) 42 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) 43 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) 44 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) 45 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) 46 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) 47 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) 48 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) 49 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) 50 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) 51 | {EDC200F5-6521-48BC-B1DF-8F0CD4B639A1}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) 52 | {06D805A9-F230-460E-A045-668D838708E1}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) 53 | {06D805A9-F230-460E-A045-668D838708E1}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) 54 | {06D805A9-F230-460E-A045-668D838708E1}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) 55 | {06D805A9-F230-460E-A045-668D838708E1}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) 56 | {06D805A9-F230-460E-A045-668D838708E1}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) 57 | {06D805A9-F230-460E-A045-668D838708E1}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) 58 | {06D805A9-F230-460E-A045-668D838708E1}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) 59 | {06D805A9-F230-460E-A045-668D838708E1}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) 60 | {06D805A9-F230-460E-A045-668D838708E1}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) 61 | {06D805A9-F230-460E-A045-668D838708E1}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) 62 | {06D805A9-F230-460E-A045-668D838708E1}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) 63 | {06D805A9-F230-460E-A045-668D838708E1}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) 64 | {06D805A9-F230-460E-A045-668D838708E1}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) 65 | {06D805A9-F230-460E-A045-668D838708E1}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) 66 | {06D805A9-F230-460E-A045-668D838708E1}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) 67 | {06D805A9-F230-460E-A045-668D838708E1}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) 68 | EndGlobalSection 69 | GlobalSection(SolutionProperties) = preSolution 70 | HideSolutionNode = FALSE 71 | EndGlobalSection 72 | GlobalSection(ExtensibilityGlobals) = postSolution 73 | SolutionGuid = {EC416996-E52C-4CA8-9FCD-66897E331291} 74 | EndGlobalSection 75 | EndGlobal 76 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/DUTs/Alias/T_Char.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/DUTs/Alias/T_LongString.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/DUTs/Alias/T_ShortString.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/DUTs/Alias/T_Size.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/DUTs/Alias/T_WhitespaceLocation.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/DUTs/Enums/E_WhitespaceLocation.TcTLEO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | 16 | 17 | 18 | 19 | "Both" 20 | "0" 21 | 22 | 23 | 24 | "Start" 25 | "" 26 | 27 | 28 | 29 | "End" 30 | "" 31 | 32 | 33 | 34 | "" 35 | "" 36 | 37 | 38 | 39 | 40 | {206d024f-74cc-4d35-8f4e-87332c24fe08} 41 | {f612e0c0-68cd-415d-a554-2d199d3bd662} 42 | {eb4b5dab-6b71-4116-a4ca-fc58df96f451} 43 | 44 | 45 | 46 | System.Collections.ArrayList 47 | System.Guid 48 | System.String 49 | {4b60233c-f940-4beb-b331-82133b520151} 50 | {53da1be7-ad25-47c3-b0e8-e26286dad2e0} 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/ITFs/Adapters/I_ReadOnlyLineBuilderAdapter.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/ITFs/Adapters/I_ReadOnlyStringBuilderAdapter.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 20 | 21 | 22 | 27 | 28 | 29 | 36 | 37 | 38 | 43 | 44 | 45 | 51 | 52 | 53 | 58 | 59 | 60 | 65 | 66 | 67 | 72 | 73 | 74 | 76 | 77 | 78 | 79 | 80 | 81 | 90 | 91 | 92 | 101 | 102 | 103 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/ITFs/Adapters/I_ReadOnlyWordBuilderAdapter.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/ITFs/Builders/I_LineBuilder.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/ITFs/Builders/I_StringBuilder.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 12 | 13 | 14 | 19 | 20 | 21 | 27 | 28 | 29 | 31 | 32 | 33 | 35 | 36 | 37 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | 47 | 48 | 54 | 55 | 56 | 61 | 62 | 63 | 70 | 71 | 72 | 77 | 78 | 79 | 85 | 86 | 87 | 92 | 93 | 94 | 99 | 100 | 101 | 106 | 107 | 108 | 114 | 115 | 116 | 123 | 124 | 125 | 132 | 133 | 134 | 140 | 141 | 142 | 144 | 145 | 146 | 147 | 148 | 149 | 154 | 155 | 156 | 161 | 162 | 163 | 172 | 173 | 174 | 182 | 183 | 184 | 189 | 190 | 191 | 196 | 197 | 198 | 207 | 208 | 209 | 218 | 219 | 220 | 226 | 227 | 228 | 230 | 231 | 232 | 237 | 238 | 239 | 243 | 244 | 245 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/ITFs/Builders/I_WordBuilder.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/ITFs/Common/I_QueryInterface.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/ITFs/Enumerators/I_Disposable.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/ITFs/Enumerators/I_Enumerable.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/ITFs/Enumerators/I_Enumerator.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 19 | 20 | 21 | 26 | 27 | 28 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/LineIDs.dbg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/LineIDs.dbg -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/PARAMs/GVLs/Param_Configurations.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Examples/P_AdapterExample.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | nPos) 31 | .CopySubstringTo(nPos, tc2_Standard.LEN(TIME_TO_STRING(tTime)), tTime2) 32 | .GetString();]]> 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Examples/P_EnumeratorExample.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Examples/P_StringBuilderExample.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | nLn1) 27 | .Replace('cats','dogs',TRUE) 28 | .Insert(nLn1, ' Anaconda! ') 29 | .Split(nLn1,100, fbStringBuilder2.Append(' Tigers are cats.')) 30 | .GetLength(Length => nLn1); 31 | 32 | sValue1 := fbStringBuilder1.ToUppercase().GetString(); 33 | sValue2 := fbStringBuilder2 34 | .ToLowercase() 35 | .BTrim() 36 | .GetString(); 37 | 38 | nLn2 := Tc2_Standard.LEN(sValue1); 39 | __DELETE(pString); 40 | END_IF]]> 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Function Blocks/Adapters/FB_ReadOnlyStringBuilderAdapter.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 32 | 33 | 36 | 37 | 38 | 39 | 45 | 46 | 49 | 50 | 51 | 52 | 59 | 60 | 63 | 64 | 65 | 66 | 72 | 73 | 75 | 76 | 77 | 78 | 84 | 85 | 87 | 88 | 89 | 90 | 95 | 96 | 98 | 99 | 100 | 101 | 107 | 108 | 110 | 111 | 112 | 113 | 116 | 117 | 119 | 120 | 121 | 122 | 129 | 130 | 132 | 133 | 134 | 135 | 138 | 139 | 142 | 143 | 145 | 146 | 147 | 148 | 149 | 159 | 160 | Position);]]> 163 | 164 | 165 | 166 | 175 | 176 | Position);]]> 179 | 180 | 181 | 182 | 189 | 190 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Function Blocks/Builders/FB_StringBuilder.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 33 | 34 | 35 | 36 | 37 | 38 | 48 | 49 | = THIS^.Capacity THEN 90 | THIS^.Reserve((THIS^.Length + Str_Len + 1)*2); 91 | END_IF 92 | 93 | THIS^.Length := THIS^.Length + Str_Len; 94 | F_StrLCat(THIS^._pBuffer, pValue, THIS^.Length + 1); 95 | 96 | IF bMalloced THEN __DELETE(pValue); END_IF]]> 97 | 98 | 99 | 100 | 109 | 110 | = THIS^.Capacity THEN 115 | THIS^.Reserve((THIS^.Length + Str_Len + 1)*2); 116 | END_IF 117 | 118 | THIS^.Length := THIS^.Length + Str_Len; 119 | F_StrLCat(THIS^._pBuffer, pBuffer, THIS^.Length + 1);]]> 120 | 121 | 122 | 123 | 125 | 126 | 128 | 129 | 130 | 131 | 137 | 138 | = Start) AND THIS^.Is_Space(THIS^._pBuffer^[End])) DO End := End - 1; END_WHILE 144 | 145 | Length := end - start + 1; 146 | F_MemMove(THIS^._pBuffer, ADR(THIS^._pBuffer^[Start]), Length); 147 | THIS^.Length := Length; 148 | THIS^._pBuffer^[THIS^.Length] := 0;]]> 149 | 150 | 151 | 152 | 154 | 155 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 172 | 173 | 180 | 181 | 182 | 183 | 193 | 194 | THIS^.Length) OR_ELSE (Length <= 0) OR_ELSE (THIS^.Length = 0) THEN Value.pValue[0] := 0; RETURN; END_IF 200 | F_StrLCpy(Value.pValue, ADR(THIS^._pBuffer^[Position]), Length + 1); 201 | 202 | __SYSTEM.TYPE_CLASS.TYPE_WSTRING: 203 | Length := MIN(Length, (Value.diSize/2) - 1 ); 204 | IF (Position > THIS^.Length) OR_ELSE (Length = 0) OR_ELSE (THIS^.Length = 0) THEN pwsTemp := Value.pValue; pwsTemp^ := ""; RETURN; END_IF 205 | pTemp := THIS^.Malloc(Length + 1); 206 | F_StrLCpy(pTemp, ADR(THIS^._pBuffer^[Position]), Length + 1); 207 | Tc2_Utilities.STRING_TO_WSTRING2(Value.pValue, pTemp, TO_UDINT((Length*2)+1)); 208 | __DELETE(pTemp); 209 | ELSE 210 | F_StrToAny(Value, THIS^.GetSubstring(Position, Length)); 211 | END_CASE]]> 212 | 213 | 214 | 215 | 220 | 221 | 231 | 232 | 233 | 234 | 239 | 240 | 0 THEN __DELETE(THIS^._pBuffer); END_IF 241 | THIS^.Capacity := 0;]]> 242 | 243 | 244 | 245 | 251 | 252 | 255 | 256 | 257 | 258 | 263 | 264 | 266 | 267 | 268 | 269 | 275 | 276 | THIS^.Length THEN RETURN; END_IF 278 | GetChar[0] := THIS^._pBuffer^[Position];]]> 279 | 280 | 281 | 282 | 287 | 288 | 289 | 290 | 291 | 292 | 297 | 298 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 309 | 310 | 315 | 316 | 317 | 318 | 319 | 320 | 326 | 327 | 329 | 330 | 331 | 332 | 344 | 345 | THIS^.Length THEN RETURN; END_IF 347 | CASE Value.TypeClass OF 348 | __SYSTEM.TYPE_CLASS.TYPE_STRING: 349 | Str_Len := F_StrLen(Value.pValue); 350 | pValue := Value.pValue; 351 | bMalloced := FALSE; 352 | 353 | __SYSTEM.TYPE_CLASS.TYPE_WSTRING: 354 | Str_Len := TO_DINT(Tc2_Utilities.WLEN2(Value.pValue)); 355 | pValue := THIS^.Malloc(Str_Len); 356 | Tc2_Utilities.WSTRING_TO_STRING2(pValue, Value.pValue, TO_UDINT(Str_Len)); 357 | 358 | __SYSTEM.TYPE_CLASS.TYPE_BOOL, 359 | __SYSTEM.TYPE_CLASS.TYPE_BYTE, 360 | __SYSTEM.TYPE_CLASS.TYPE_WORD, 361 | __SYSTEM.TYPE_CLASS.TYPE_DWORD, 362 | __SYSTEM.TYPE_CLASS.TYPE_LWORD, 363 | __SYSTEM.TYPE_CLASS.TYPE_SINT, 364 | __SYSTEM.TYPE_CLASS.TYPE_INT, 365 | __SYSTEM.TYPE_CLASS.TYPE_DINT, 366 | __SYSTEM.TYPE_CLASS.TYPE_LINT, 367 | __SYSTEM.TYPE_CLASS.TYPE_USINT, 368 | __SYSTEM.TYPE_CLASS.TYPE_UINT, 369 | __SYSTEM.TYPE_CLASS.TYPE_UDINT, 370 | __SYSTEM.TYPE_CLASS.TYPE_ULINT, 371 | __SYSTEM.TYPE_CLASS.TYPE_REAL, 372 | __SYSTEM.TYPE_CLASS.TYPE_LREAL, 373 | __SYSTEM.TYPE_CLASS.TYPE_TIME, 374 | __SYSTEM.TYPE_CLASS.TYPE_LTIME, 375 | __SYSTEM.TYPE_CLASS.TYPE_DATE, 376 | __SYSTEM.TYPE_CLASS.TYPE_DATEANDTIME, 377 | __SYSTEM.TYPE_CLASS.TYPE_TIMEOFDAY, 378 | __SYSTEM.TYPE_CLASS.TYPE_POINTER: 379 | pValue := THIS^.Malloc(SIZEOF(T_LongString)); 380 | pValue^ := F_AnyToString(Value); 381 | Str_Len := F_StrLen(pValue); 382 | ELSE 383 | RETURN; 384 | END_CASE 385 | 386 | IF (THIS^.Length + Str_Len) >= THIS^.Capacity THEN 387 | THIS^.Reserve((THIS^.Length + Str_Len + 1)*2); 388 | END_IF 389 | 390 | F_MemMove(THIS^._pBuffer + TO_UDINT(Position) + TO_UDINT(Str_Len), THIS^._pBuffer + TO_UDINT(Position), THIS^.Length - Position + 1); 391 | F_MemCpy(THIS^._pBuffer + TO_UDINT(Position), pValue, Str_Len); 392 | THIS^.Length := THIS^.Length + Str_Len; 393 | 394 | IF bMalloced THEN __DELETE(pValue); END_IF]]> 395 | 396 | 397 | 398 | 408 | 409 | THIS^.Length THEN RETURN; END_IF 411 | Str_Len := F_StrLen(pBuffer); 412 | 413 | IF (THIS^.Length + Str_Len) >= THIS^.Capacity THEN 414 | THIS^.Reserve((THIS^.Length + Str_Len + 1)*2); 415 | END_IF 416 | 417 | F_MemMove(THIS^._pBuffer + TO_UDINT(Position) + TO_UDINT(Str_Len), THIS^._pBuffer + TO_UDINT(Position), THIS^.Length - Position + 1); 418 | F_MemCpy(THIS^._pBuffer + TO_UDINT(Position), pBuffer, Str_Len); 419 | THIS^.Length := THIS^.Length + Str_Len;]]> 420 | 421 | 422 | 423 | 428 | 429 | 430 | 431 | 432 | 433 | 443 | 444 | 451 | 452 | 453 | 454 | 456 | 457 | 461 | 462 | 463 | 464 | 465 | 466 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 482 | 483 | 493 | 494 | 495 | 496 | 501 | 502 | 503 | 504 | 505 | 506 | 511 | 512 | THIS^.Length OR Position < 0 OR Length <= 0 OR Position > THIS^.Length THEN RETURN; END_IF 514 | F_MemMove(ADR(THIS^._pBuffer^[Position]), ADR(THIS^._pBuffer^[Position + Length]), THIS^.Length - (Position + Length) + 1); 515 | THIS^.Length := THIS^.Length - Length; 516 | ]]> 517 | 518 | 519 | 520 | 529 | 530 | 531 | 532 | 533 | 534 | 548 | 549 | Position); 557 | THIS^.Remove(Position, Old_Str_Len); 558 | THIS^.InsertAny(Position, New_Value); 559 | IF NOT bReplace_All OR Position < 0 THEN EXIT; END_IF 560 | Position := Position + New_Str_Len; 561 | END_WHILE 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | ]]> 570 | 571 | 572 | 573 | 580 | 581 | 587 | 588 | 589 | 590 | 596 | 597 | 604 | 605 | 606 | 607 | 613 | 614 | = Start) AND THIS^.Is_Space(THIS^._pBuffer^[End])) DO End := End - 1; END_WHILE 619 | 620 | Length := end - start + 1; 621 | F_MemMove(THIS^._pBuffer, ADR(THIS^._pBuffer^[Start]), Length); 622 | THIS^.Length := Length; 623 | THIS^._pBuffer^[THIS^.Length] := 0;]]> 624 | 625 | 626 | 627 | 636 | 637 | Position);]]> 638 | 639 | 640 | 641 | 655 | 656 | THIS^.Length - 1 THEN RETURN; END_IF 658 | CASE Value.TypeClass OF 659 | __SYSTEM.TYPE_CLASS.TYPE_STRING: 660 | pValue := Value.pValue; 661 | bMalloced := FALSE; 662 | 663 | __SYSTEM.TYPE_CLASS.TYPE_WSTRING: 664 | Str_Len := TO_DINT(Tc2_Utilities.WLEN2(Value.pValue)); 665 | pValue := THIS^.Malloc(Str_Len + 1); 666 | Tc2_Utilities.WSTRING_TO_STRING2(pValue, Value.pValue, TO_UDINT(Str_Len)); 667 | 668 | __SYSTEM.TYPE_CLASS.TYPE_BOOL, 669 | __SYSTEM.TYPE_CLASS.TYPE_BYTE, 670 | __SYSTEM.TYPE_CLASS.TYPE_WORD, 671 | __SYSTEM.TYPE_CLASS.TYPE_DWORD, 672 | __SYSTEM.TYPE_CLASS.TYPE_LWORD, 673 | __SYSTEM.TYPE_CLASS.TYPE_SINT, 674 | __SYSTEM.TYPE_CLASS.TYPE_INT, 675 | __SYSTEM.TYPE_CLASS.TYPE_DINT, 676 | __SYSTEM.TYPE_CLASS.TYPE_LINT, 677 | __SYSTEM.TYPE_CLASS.TYPE_USINT, 678 | __SYSTEM.TYPE_CLASS.TYPE_UINT, 679 | __SYSTEM.TYPE_CLASS.TYPE_UDINT, 680 | __SYSTEM.TYPE_CLASS.TYPE_ULINT, 681 | __SYSTEM.TYPE_CLASS.TYPE_REAL, 682 | __SYSTEM.TYPE_CLASS.TYPE_LREAL, 683 | __SYSTEM.TYPE_CLASS.TYPE_TIME, 684 | __SYSTEM.TYPE_CLASS.TYPE_LTIME, 685 | __SYSTEM.TYPE_CLASS.TYPE_DATE, 686 | __SYSTEM.TYPE_CLASS.TYPE_DATEANDTIME, 687 | __SYSTEM.TYPE_CLASS.TYPE_TIMEOFDAY, 688 | __SYSTEM.TYPE_CLASS.TYPE_POINTER: 689 | pValue := THIS^.Malloc(SIZEOF(T_LongString)); 690 | pValue^ := F_AnyToString(Value); 691 | ELSE 692 | RETURN; 693 | END_CASE 694 | pLoc := F_StrStr(ADR(THIS^._pBuffer^[Start_Position]), pValue); 695 | IF bMalloced THEN __DELETE(pValue); END_IF 696 | IF pLoc = 0 THEN RETURN; END_IF 697 | Position := TO_DINT(pLoc - THIS^._pBuffer);]]> 698 | 699 | 700 | 701 | 711 | 712 | THIS^.Length) OR_ELSE (Length <= 0) OR_ELSE (THIS^.Length = 0) THEN RETURN; END_IF 715 | End_Position := Position + Length; 716 | IF End_Position > THIS^.Length THEN End_Position := THIS^.Length; END_IF 717 | 718 | FOR i := Position TO End_Position - 1 DO 719 | t_Char[0] := THIS^._pBuffer^[i]; 720 | ipStringBuilder.Append(t_Char); 721 | END_FOR]]> 722 | 723 | 724 | 725 | 731 | 732 | (THIS^.Length + 1) THEN 734 | pTemp := THIS^.Malloc(THIS^.Length + 1); 735 | F_StrLCpy(pTemp, THIS^._pBuffer, THIS^.Length + 1); 736 | THIS^.Free(); 737 | THIS^._pBuffer := pTemp; 738 | THIS^.Capacity := THIS^.Length + 1; 739 | END_IF]]> 740 | 741 | 742 | 743 | 748 | 749 | = 65 AND THIS^._pBuffer^[i]<= 90 THEN 753 | THIS^._pBuffer^[i] := THIS^._pBuffer^[i] + 32; 754 | END_IF 755 | END_FOR]]> 756 | 757 | 758 | 759 | 764 | 765 | = 97 AND THIS^._pBuffer^[i]<= 122 THEN 769 | THIS^._pBuffer^[i] := THIS^._pBuffer^[i] - 32; 770 | END_IF 771 | END_FOR]]> 772 | 773 | 774 | 775 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Function Blocks/Enumerators/FB_AbstractStringEnumerator.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 39 | 40 | 41 | 42 | 43 | 44 | 47 | 48 | 49 | 50 | 51 | 52 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Function Blocks/Enumerators/FB_StringBuilderEnumerator.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 36 | 37 | = THIS^._ipStringBuilder.Length THEN RETURN; END_IF 38 | pTemp := __NEW(BYTE, 2); 39 | pTemp^ := THIS^._ipStringBuilder.GetChar(THIS^._Index);]]> 40 | 41 | 42 | 43 | 51 | 52 | 53 | 54 | 55 | 56 | 61 | 62 | 65 | 66 | 67 | 68 | 71 | 72 | = THIS^._ipStringBuilder.Length THEN RETURN; END_IF 73 | THIS^._Index := THIS^._Index + 1; 74 | Next := TRUE;]]> 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Function Blocks/_Internal/FB_Free.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 20 | 21 | 0 THEN __DELETE(THIS^._pValue); END_IF]]> 24 | 25 | 26 | 27 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_AnyStringLength.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_AnyToString.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 34 | 35 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_BYTETOCHAR.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_CHARTOBYTE.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_ISBOOL.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_ISDIGIT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | = '0' AND t_Char <= '9';]]> 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_ISLTIME.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 21 | 22 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_ISSPACE.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_ISTIME.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 21 | 22 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_IsAnyToStringCompatable.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_IsNumber.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 0 DO 18 | IF F_IsDigit(F_ByteToChar(sValue[i])) THEN 19 | bHasDigits := TRUE; 20 | ELSIF F_ByteToChar(sValue[i]) = '.' THEN 21 | IF bHasDecimal THEN RETURN; END_IF 22 | bHasDecimal := TRUE; 23 | ELSIF F_ByteToChar(sValue[i]) = 'E' OR_ELSE F_ByteToChar(sValue[i]) = 'e' THEN 24 | IF bHasExponent THEN RETURN; END_IF 25 | IF F_ByteToChar(sValue[i+1]) = '+' OR_ELSE F_ByteToChar(sValue[i+1]) = '-' THEN i := i + 1; END_IF 26 | bHasExponent := TRUE; 27 | ELSE 28 | RETURN; 29 | END_IF 30 | i := i + 1; 31 | END_WHILE 32 | 33 | IF NOT bHasDigits THEN RETURN; END_IF 34 | F_IsNumber := TRUE;]]> 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_IsSignedInteger.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_IsUnsignedInteger.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_MALLOCSTR.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_MEMCPY.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_MEMMOVE.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_STRLCAT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | = DstSize THEN F_StrLCat := SrcLen; RETURN; END_IF 22 | 23 | CopyLen := DstSize - DstLen - 1; 24 | 25 | F_MemCpy(pDst + TO_UDINT(DstLen), pSrc, CopyLen); 26 | pDst^[DstLen + CopyLen] := 0; 27 | F_StrLCat := DstLen + SrcLen;]]> 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_STRLCPY.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_STRLEN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 0 DO 15 | i := i + 1; 16 | END_WHILE 17 | F_StrLen := i;]]> 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_STRNCMP.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | sValue2[i]) OR_ELSE (sValue1[i] = 0 OR sValue2[i] = 0) THEN RETURN; END_IF 19 | END_FOR 20 | F_StrNCmp := TRUE;]]> 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_STRSTR.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | HaystackLen THEN RETURN; END_IF 22 | 23 | FOR i := 0 TO HaystackLen - NeedleLen DO 24 | FOR j := 0 TO NeedleLen - 1 DO 25 | IF pHaystackStr^[i+j] <> pNeedleStr^[j] THEN EXIT; END_IF 26 | END_FOR 27 | IF j = NeedleLen THEN F_StrStr := pHaystackStr + TO_UDINT(i); RETURN; END_IF 28 | END_FOR]]> 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_STRTOANY.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 35 | 36 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_StringBuilder.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_TOLOWER.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 0 DO 14 | IF sValue[i] >= 65 AND sValue[i]<= 90 THEN sValue[i] := sValue[i] + 32; END_IF 15 | i := i + 1; 16 | END_WHILE]]> 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_TOUPPER.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 0 DO 14 | IF sValue[i] >= 97 AND sValue[i]<= 122 THEN sValue[i] := sValue[i] - 32; END_IF 15 | i := i + 1; 16 | END_WHILE]]> 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/Functions/F_TRIMWHITESPACE.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | = Start) AND F_IsSpace(F_ByteToChar(sValue[End]))) DO End := End - 1; END_WHILE 27 | T_WhitespaceLocation.Both: 28 | WHILE ((Start <= End) AND F_IsSpace(F_ByteToChar(sValue[Start]))) DO Start := Start + 1; END_WHILE 29 | WHILE ((End >= Start) AND F_IsSpace(F_ByteToChar(sValue[End]))) DO End := End - 1; END_WHILE 30 | ELSE 31 | RETURN; 32 | END_CASE 33 | 34 | Length := End - Start + 1; 35 | F_MemMove(ADR(sValue), ADR(sValue[Start]), Length); 36 | sValue[Length] := 0;]]> 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/POUs/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 20 7 | 8 | MAIN 9 | 10 | {82ea6f08-8278-4aaf-bc8b-48f3fb0dd029} 11 | {b070d4e3-3611-4dec-8442-d6aadff9aa82} 12 | {60df280a-f9cd-4f73-b023-89f7993b64ce} 13 | {cf20380a-2359-4b5d-9dbe-789dc1cbf211} 14 | {763ef7e9-7dd7-499c-9252-142026640b55} 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/Project Information/F_GetCompany.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/Project Information/F_GetTitle.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/Project Information/F_GetVersion.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/TcDynStringKit.plcproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 1.0.0.0 5 | 2.0 6 | {06d805a9-f230-460e-a045-668d838708e1} 7 | True 8 | true 9 | true 10 | false 11 | TcDynStringKit 12 | 3.1.4023.0 13 | {e0d2e34d-1132-4eaf-b817-58bdfcc2a96f} 14 | {6c98dfdc-4718-4227-b033-8d1d816ac7c4} 15 | {a50cf20f-afdc-4464-bd18-5237fbe0d15c} 16 | {a5dadf37-0e2d-41fb-9718-a5e861fd494e} 17 | {76c5f3b1-a59d-4c82-9f99-165c8433355b} 18 | {94504b01-9442-4fd9-8ce9-45b44800d9c4} 19 | FisoThemes 20 | false 21 | TwinCAT Dynamic String Kit 22 | 1.0.2.2 23 | TcDynStringKit 24 | true 25 | Goodwill Mzumala 26 | A library that provides tools for working with dynamic strings in TwinCAT. 27 | 28 | 29 | 30 | Code 31 | 32 | 33 | Code 34 | 35 | 36 | Code 37 | 38 | 39 | Code 40 | 41 | 42 | Code 43 | 44 | 45 | Code 46 | 47 | 48 | Code 49 | 50 | 51 | Code 52 | 53 | 54 | Code 55 | 56 | 57 | Code 58 | 59 | 60 | Code 61 | 62 | 63 | Code 64 | 65 | 66 | Code 67 | 68 | 69 | Code 70 | 71 | 72 | Code 73 | 74 | 75 | Code 76 | 77 | 78 | Code 79 | true 80 | 81 | 82 | Code 83 | 84 | 85 | Code 86 | 87 | 88 | Code 89 | 90 | 91 | Code 92 | 93 | 94 | Code 95 | 96 | 97 | Code 98 | 99 | 100 | Code 101 | 102 | 103 | Code 104 | 105 | 106 | Code 107 | 108 | 109 | Code 110 | 111 | 112 | Code 113 | 114 | 115 | Code 116 | 117 | 118 | Code 119 | 120 | 121 | Code 122 | 123 | 124 | Code 125 | 126 | 127 | Code 128 | 129 | 130 | Code 131 | 132 | 133 | Code 134 | 135 | 136 | Code 137 | 138 | 139 | Code 140 | 141 | 142 | Code 143 | 144 | 145 | Code 146 | 147 | 148 | Code 149 | 150 | 151 | Code 152 | 153 | 154 | Code 155 | 156 | 157 | Code 158 | 159 | 160 | Code 161 | 162 | 163 | Code 164 | 165 | 166 | Code 167 | 168 | 169 | Code 170 | 171 | 172 | Code 173 | 174 | 175 | Code 176 | 177 | 178 | Code 179 | 180 | 181 | Code 182 | 183 | 184 | Code 185 | 186 | 187 | Code 188 | 189 | 190 | Code 191 | true 192 | 193 | 194 | Code 195 | true 196 | 197 | 198 | Code 199 | true 200 | 201 | 202 | Code 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | Tc2_Standard, * (Beckhoff Automation GmbH) 233 | Tc2_Standard 234 | 235 | 236 | Tc2_System, * (Beckhoff Automation GmbH) 237 | Tc2_System 238 | 239 | 240 | Tc2_Utilities, * (Beckhoff Automation GmbH) 241 | Tc2_Utilities 242 | 243 | 244 | Tc3_Module, * (Beckhoff Automation GmbH) 245 | Tc3_Module 246 | 247 | 248 | 249 | 250 | Content 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | "<ProjectRoot>" 259 | 260 | {192FAD59-8248-4824-A8DE-9177C94C195A} 261 | 262 | "{192FAD59-8248-4824-A8DE-9177C94C195A}" 263 | 264 | 265 | 266 | {29BD8D0C-3586-4548-BB48-497B9A01693F} 267 | 268 | "{29BD8D0C-3586-4548-BB48-497B9A01693F}" 269 | 270 | Rules 271 | 272 | "Rules" 273 | 274 | 275 | 276 | 277 | 278 | 279 | {40450F57-0AA3-4216-96F3-5444ECB29763} 280 | 281 | "{40450F57-0AA3-4216-96F3-5444ECB29763}" 282 | 283 | 284 | ActiveVisuProfile 285 | IR0whWr8bwfwBwAAiD2qpQAAAABVAgAA37x72QAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsAZgA5ADUAYgBiADQAMgA2AC0ANQA1ADIANAAtADQAYgA0ADUALQA5ADQAMAAwAC0AZgBiADAAZgAyAGUANwA3AGUANQAxAGIAfQADCE4AYQBtAGUABDBUAHcAaQBuAEMAQQBUACAAMwAuADEAIABCAHUAaQBsAGQAIAA0ADAAMgA0AC4ANwAFFlAAcgBvAGYAaQBsAGUARABhAHQAYQAGTHsAMQA2AGUANQA1AGIANgAwAC0ANwAwADQAMwAtADQAYQA2ADMALQBiADYANQBiAC0ANgAxADQANwAxADMAOAA3ADgAZAA0ADIAfQAHEkwAaQBiAHIAYQByAGkAZQBzAAhMewAzAGIAZgBkADUANAA1ADkALQBiADAANwBmAC0ANABkADYAZQAtAGEAZQAxAGEALQBhADgAMwAzADUANgBhADUANQAxADQAMgB9AAlMewA5AGMAOQA1ADgAOQA2ADgALQAyAGMAOAA1AC0ANAAxAGIAYgAtADgAOAA3ADEALQA4ADkANQBmAGYAMQBmAGUAZABlADEAYQB9AAoOVgBlAHIAcwBpAG8AbgALBmkAbgB0AAwKVQBzAGEAZwBlAA0KVABpAHQAbABlAA4aVgBpAHMAdQBFAGwAZQBtAE0AZQB0AGUAcgAPDkMAbwBtAHAAYQBuAHkAEAxTAHkAcwB0AGUAbQARElYAaQBzAHUARQBsAGUAbQBzABIwVgBpAHMAdQBFAGwAZQBtAHMAUwBwAGUAYwBpAGEAbABDAG8AbgB0AHIAbwBsAHMAEyhWAGkAcwB1AEUAbABlAG0AcwBXAGkAbgBDAG8AbgB0AHIAbwBsAHMAFCRWAGkAcwB1AEUAbABlAG0AVABlAHgAdABFAGQAaQB0AG8AcgAVIlYAaQBzAHUATgBhAHQAaQB2AGUAQwBvAG4AdAByAG8AbAAWFHYAaQBzAHUAaQBuAHAAdQB0AHMAFwxzAHkAcwB0AGUAbQAYGFYAaQBzAHUARQBsAGUAbQBCAGEAcwBlABkmRABlAHYAUABsAGEAYwBlAGgAbwBsAGQAZQByAHMAVQBzAGUAZAAaCGIAbwBvAGwAGyJQAGwAdQBnAGkAbgBDAG8AbgBzAHQAcgBhAGkAbgB0AHMAHEx7ADQAMwBkADUAMgBiAGMAZQAtADkANAAyAGMALQA0ADQAZAA3AC0AOQBlADkANAAtADEAYgBmAGQAZgAzADEAMABlADYAMwBjAH0AHRxBAHQATABlAGEAcwB0AFYAZQByAHMAaQBvAG4AHhRQAGwAdQBnAGkAbgBHAHUAaQBkAB8WUwB5AHMAdABlAG0ALgBHAHUAaQBkACBIYQBmAGMAZAA1ADQANAA2AC0ANAA5ADEANAAtADQAZgBlADcALQBiAGIANwA4AC0AOQBiAGYAZgBlAGIANwAwAGYAZAAxADcAIRRVAHAAZABhAHQAZQBJAG4AZgBvACJMewBiADAAMwAzADYANgBhADgALQBiADUAYwAwAC0ANABiADkAYQAtAGEAMAAwAGUALQBlAGIAOAA2ADAAMQAxADEAMAA0AGMAMwB9ACMOVQBwAGQAYQB0AGUAcwAkTHsAMQA4ADYAOABmAGYAYwA5AC0AZQA0AGYAYwAtADQANQAzADIALQBhAGMAMAA2AC0AMQBlADMAOQBiAGIANQA1ADcAYgA2ADkAfQAlTHsAYQA1AGIAZAA0ADgAYwAzAC0AMABkADEANwAtADQAMQBiADUALQBiADEANgA0AC0ANQBmAGMANgBhAGQAMgBiADkANgBiADcAfQAmFk8AYgBqAGUAYwB0AHMAVAB5AHAAZQAnVFUAcABkAGEAdABlAEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwARgBvAHIAQwBvAG4AdgBlAHIAdABpAGIAbABlAEwAaQBiAHIAYQByAGkAZQBzACgQTABpAGIAVABpAHQAbABlACkUTABpAGIAQwBvAG0AcABhAG4AeQAqHlUAcABkAGEAdABlAFAAcgBvAHYAaQBkAGUAcgBzACs4UwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBIAGEAcwBoAHQAYQBiAGwAZQAsEnYAaQBzAHUAZQBsAGUAbQBzAC1INgBjAGIAMQBjAGQAZQAxAC0AZAA1AGQAYwAtADQAYQAzAGIALQA5ADAANQA0AC0AMgAxAGYAYQA3ADUANgBhADMAZgBhADQALihJAG4AdABlAHIAZgBhAGMAZQBWAGUAcgBzAGkAbwBuAEkAbgBmAG8AL0x7AGMANgAxADEAZQA0ADAAMAAtADcAZgBiADkALQA0AGMAMwA1AC0AYgA5AGEAYwAtADQAZQAzADEANABiADUAOQA5ADYANAAzAH0AMBhNAGEAagBvAHIAVgBlAHIAcwBpAG8AbgAxGE0AaQBuAG8AcgBWAGUAcgBzAGkAbwBuADIMTABlAGcAYQBjAHkAMzBMAGEAbgBnAHUAYQBnAGUATQBvAGQAZQBsAFYAZQByAHMAaQBvAG4ASQBuAGYAbwA0MEwAbwBhAGQATABpAGIAcgBhAHIAaQBlAHMASQBuAHQAbwBQAHIAbwBqAGUAYwB0ADUaQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQDQAAIaA9ADAS0E0AUGGgfQBwgaAUUHCQjQAAkaBEUKCwQDAAAABQAAAA0AAAAAAAAA0AwLrQIAAADQDQEtDtAPAS0Q0AAJGgRFCgsEAwAAAAUAAAANAAAAKAAAANAMC60BAAAA0A0BLRHQDwEtENAACRoERQoLBAMAAAAFAAAADQAAAAAAAADQDAutAgAAANANAS0S0A8BLRDQAAkaBEUKCwQDAAAABQAAAA0AAAAUAAAA0AwLrQIAAADQDQEtE9APAS0Q0AAJGgRFCgsEAwAAAAUAAAANAAAAAAAAANAMC60CAAAA0A0BLRTQDwEtENAACRoERQoLBAMAAAAFAAAADQAAAAAAAADQDAutAgAAANANAS0V0A8BLRDQAAkaBEUKCwQDAAAABQAAAA0AAAAAAAAA0AwLrQIAAADQDQEtFtAPAS0X0AAJGgRFCgsEAwAAAAUAAAANAAAAKAAAANAMC60EAAAA0A0BLRjQDwEtENAZGq0BRRscAdAAHBoCRR0LBAMAAAAFAAAADQAAAAAAAADQHh8tINAhIhoCRSMkAtAAJRoFRQoLBAMAAAADAAAAAAAAAAoAAADQJgutAAAAANADAS0n0CgBLRHQKQEtENAAJRoFRQoLBAMAAAADAAAAAAAAAAoAAADQJgutAQAAANADAS0n0CgBLRHQKQEtEJoqKwFFAAEC0AABLSzQAAEtF9AAHy0t0C4vGgPQMAutAQAAANAxC60XAAAA0DIarQDQMy8aA9AwC60CAAAA0DELrQMAAADQMhqtANA0Gq0A0DUarQA= 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | System.Collections.Hashtable 294 | {54dd0eac-a6d8-46f2-8c27-2f43c7e49861} 295 | System.String 296 | 297 | 298 | 299 | 300 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/Version/Global_Version.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_standard/3.3.3.0/tc2_standard.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_standard/3.3.3.0/tc2_standard.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_standard/3.4.5.0/tc2_standard.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_standard/3.4.5.0/tc2_standard.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_system/3.4.26.0/tc2_system.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_system/3.4.26.0/tc2_system.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_system/3.5.3.0/tc2_system.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_system/3.5.3.0/tc2_system.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_system/3.6.4.0/tc2_system.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_system/3.6.4.0/tc2_system.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_utilities/3.3.54.0/tc2_utilities.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_utilities/3.3.54.0/tc2_utilities.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_utilities/3.4.8.0/tc2_utilities.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_utilities/3.4.8.0/tc2_utilities.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_utilities/3.8.1.0/tc2_utilities.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc2_utilities/3.8.1.0/tc2_utilities.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc3_module/3.3.21.0/tc3_module.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc3_module/3.3.21.0/tc3_module.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc3_module/3.3.23.0/tc3_module.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc3_module/3.3.23.0/tc3_module.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc3_module/3.4.5.0/tc3_module.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKit/_Libraries/beckhoff automation gmbh/tc3_module/3.4.5.0/tc3_module.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/POUs/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/TcDynStringKitTest.plcproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1.0.0.0 4 | 2.0 5 | {edc200f5-6521-48bc-b1df-8f0cd4b639a1} 6 | True 7 | true 8 | true 9 | false 10 | TcDynStringKitTest 11 | 3.1.4023.0 12 | {79988c6d-3ce3-406b-b82f-283a297ef641} 13 | {da475703-da6b-478a-adf8-b88e485c15ef} 14 | {da6a77ad-7bc7-42c7-9daa-2f699fc8ef3d} 15 | {c2ba049a-6b94-451f-bdff-787c3760403e} 16 | {f7814f9c-394f-49fb-bf60-ffffe3b6641f} 17 | {ad6c4d8b-d7a8-48c2-943f-863729f96312} 18 | 19 | 20 | 21 | Code 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | Tc2_Standard, * (Beckhoff Automation GmbH) 33 | Tc2_Standard 34 | 35 | 36 | Tc2_System, * (Beckhoff Automation GmbH) 37 | Tc2_System 38 | 39 | 40 | Tc3_Module, * (Beckhoff Automation GmbH) 41 | Tc3_Module 42 | 43 | 44 | TcUnit, * (www.tcunit.org) 45 | TcUnit 46 | 47 | 48 | 49 | 50 | Content 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | "<ProjectRoot>" 59 | 60 | {192FAD59-8248-4824-A8DE-9177C94C195A} 61 | 62 | "{192FAD59-8248-4824-A8DE-9177C94C195A}" 63 | 64 | 65 | 66 | {29BD8D0C-3586-4548-BB48-497B9A01693F} 67 | 68 | "{29BD8D0C-3586-4548-BB48-497B9A01693F}" 69 | 70 | Rules 71 | 72 | "Rules" 73 | 74 | 75 | 76 | 77 | 78 | 79 | {40450F57-0AA3-4216-96F3-5444ECB29763} 80 | 81 | "{40450F57-0AA3-4216-96F3-5444ECB29763}" 82 | 83 | 84 | ActiveVisuProfile 85 | IR0whWr8bwfwBwAAiD2qpQAAAABVAgAA37x72QAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsAZgA5ADUAYgBiADQAMgA2AC0ANQA1ADIANAAtADQAYgA0ADUALQA5ADQAMAAwAC0AZgBiADAAZgAyAGUANwA3AGUANQAxAGIAfQADCE4AYQBtAGUABDBUAHcAaQBuAEMAQQBUACAAMwAuADEAIABCAHUAaQBsAGQAIAA0ADAAMgA0AC4ANwAFFlAAcgBvAGYAaQBsAGUARABhAHQAYQAGTHsAMQA2AGUANQA1AGIANgAwAC0ANwAwADQAMwAtADQAYQA2ADMALQBiADYANQBiAC0ANgAxADQANwAxADMAOAA3ADgAZAA0ADIAfQAHEkwAaQBiAHIAYQByAGkAZQBzAAhMewAzAGIAZgBkADUANAA1ADkALQBiADAANwBmAC0ANABkADYAZQAtAGEAZQAxAGEALQBhADgAMwAzADUANgBhADUANQAxADQAMgB9AAlMewA5AGMAOQA1ADgAOQA2ADgALQAyAGMAOAA1AC0ANAAxAGIAYgAtADgAOAA3ADEALQA4ADkANQBmAGYAMQBmAGUAZABlADEAYQB9AAoOVgBlAHIAcwBpAG8AbgALBmkAbgB0AAwKVQBzAGEAZwBlAA0KVABpAHQAbABlAA4aVgBpAHMAdQBFAGwAZQBtAE0AZQB0AGUAcgAPDkMAbwBtAHAAYQBuAHkAEAxTAHkAcwB0AGUAbQARElYAaQBzAHUARQBsAGUAbQBzABIwVgBpAHMAdQBFAGwAZQBtAHMAUwBwAGUAYwBpAGEAbABDAG8AbgB0AHIAbwBsAHMAEyhWAGkAcwB1AEUAbABlAG0AcwBXAGkAbgBDAG8AbgB0AHIAbwBsAHMAFCRWAGkAcwB1AEUAbABlAG0AVABlAHgAdABFAGQAaQB0AG8AcgAVIlYAaQBzAHUATgBhAHQAaQB2AGUAQwBvAG4AdAByAG8AbAAWFHYAaQBzAHUAaQBuAHAAdQB0AHMAFwxzAHkAcwB0AGUAbQAYGFYAaQBzAHUARQBsAGUAbQBCAGEAcwBlABkmRABlAHYAUABsAGEAYwBlAGgAbwBsAGQAZQByAHMAVQBzAGUAZAAaCGIAbwBvAGwAGyJQAGwAdQBnAGkAbgBDAG8AbgBzAHQAcgBhAGkAbgB0AHMAHEx7ADQAMwBkADUAMgBiAGMAZQAtADkANAAyAGMALQA0ADQAZAA3AC0AOQBlADkANAAtADEAYgBmAGQAZgAzADEAMABlADYAMwBjAH0AHRxBAHQATABlAGEAcwB0AFYAZQByAHMAaQBvAG4AHhRQAGwAdQBnAGkAbgBHAHUAaQBkAB8WUwB5AHMAdABlAG0ALgBHAHUAaQBkACBIYQBmAGMAZAA1ADQANAA2AC0ANAA5ADEANAAtADQAZgBlADcALQBiAGIANwA4AC0AOQBiAGYAZgBlAGIANwAwAGYAZAAxADcAIRRVAHAAZABhAHQAZQBJAG4AZgBvACJMewBiADAAMwAzADYANgBhADgALQBiADUAYwAwAC0ANABiADkAYQAtAGEAMAAwAGUALQBlAGIAOAA2ADAAMQAxADEAMAA0AGMAMwB9ACMOVQBwAGQAYQB0AGUAcwAkTHsAMQA4ADYAOABmAGYAYwA5AC0AZQA0AGYAYwAtADQANQAzADIALQBhAGMAMAA2AC0AMQBlADMAOQBiAGIANQA1ADcAYgA2ADkAfQAlTHsAYQA1AGIAZAA0ADgAYwAzAC0AMABkADEANwAtADQAMQBiADUALQBiADEANgA0AC0ANQBmAGMANgBhAGQAMgBiADkANgBiADcAfQAmFk8AYgBqAGUAYwB0AHMAVAB5AHAAZQAnVFUAcABkAGEAdABlAEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwARgBvAHIAQwBvAG4AdgBlAHIAdABpAGIAbABlAEwAaQBiAHIAYQByAGkAZQBzACgQTABpAGIAVABpAHQAbABlACkUTABpAGIAQwBvAG0AcABhAG4AeQAqHlUAcABkAGEAdABlAFAAcgBvAHYAaQBkAGUAcgBzACs4UwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBIAGEAcwBoAHQAYQBiAGwAZQAsEnYAaQBzAHUAZQBsAGUAbQBzAC1INgBjAGIAMQBjAGQAZQAxAC0AZAA1AGQAYwAtADQAYQAzAGIALQA5ADAANQA0AC0AMgAxAGYAYQA3ADUANgBhADMAZgBhADQALihJAG4AdABlAHIAZgBhAGMAZQBWAGUAcgBzAGkAbwBuAEkAbgBmAG8AL0x7AGMANgAxADEAZQA0ADAAMAAtADcAZgBiADkALQA0AGMAMwA1AC0AYgA5AGEAYwAtADQAZQAzADEANABiADUAOQA5ADYANAAzAH0AMBhNAGEAagBvAHIAVgBlAHIAcwBpAG8AbgAxGE0AaQBuAG8AcgBWAGUAcgBzAGkAbwBuADIMTABlAGcAYQBjAHkAMzBMAGEAbgBnAHUAYQBnAGUATQBvAGQAZQBsAFYAZQByAHMAaQBvAG4ASQBuAGYAbwA0MEwAbwBhAGQATABpAGIAcgBhAHIAaQBlAHMASQBuAHQAbwBQAHIAbwBqAGUAYwB0ADUaQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQDQAAIaA9ADAS0E0AUGGgfQBwgaAUUHCQjQAAkaBEUKCwQDAAAABQAAAA0AAAAAAAAA0AwLrQIAAADQDQEtDtAPAS0Q0AAJGgRFCgsEAwAAAAUAAAANAAAAKAAAANAMC60BAAAA0A0BLRHQDwEtENAACRoERQoLBAMAAAAFAAAADQAAAAAAAADQDAutAgAAANANAS0S0A8BLRDQAAkaBEUKCwQDAAAABQAAAA0AAAAUAAAA0AwLrQIAAADQDQEtE9APAS0Q0AAJGgRFCgsEAwAAAAUAAAANAAAAAAAAANAMC60CAAAA0A0BLRTQDwEtENAACRoERQoLBAMAAAAFAAAADQAAAAAAAADQDAutAgAAANANAS0V0A8BLRDQAAkaBEUKCwQDAAAABQAAAA0AAAAAAAAA0AwLrQIAAADQDQEtFtAPAS0X0AAJGgRFCgsEAwAAAAUAAAANAAAAKAAAANAMC60EAAAA0A0BLRjQDwEtENAZGq0BRRscAdAAHBoCRR0LBAMAAAAFAAAADQAAAAAAAADQHh8tINAhIhoCRSMkAtAAJRoFRQoLBAMAAAADAAAAAAAAAAoAAADQJgutAAAAANADAS0n0CgBLRHQKQEtENAAJRoFRQoLBAMAAAADAAAAAAAAAAoAAADQJgutAQAAANADAS0n0CgBLRHQKQEtEJoqKwFFAAEC0AABLSzQAAEtF9AAHy0t0C4vGgPQMAutAQAAANAxC60XAAAA0DIarQDQMy8aA9AwC60CAAAA0DELrQMAAADQMhqtANA0Gq0A0DUarQA= 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | System.Collections.Hashtable 94 | {54dd0eac-a6d8-46f2-8c27-2f43c7e49861} 95 | System.String 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_standard/3.3.3.0/tc2_standard.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_standard/3.3.3.0/tc2_standard.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_standard/3.4.5.0/tc2_standard.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_standard/3.4.5.0/tc2_standard.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_system/3.4.26.0/tc2_system.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_system/3.4.26.0/tc2_system.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_system/3.5.3.0/tc2_system.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_system/3.5.3.0/tc2_system.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_system/3.6.4.0/tc2_system.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_system/3.6.4.0/tc2_system.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_utilities/3.3.54.0/tc2_utilities.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_utilities/3.3.54.0/tc2_utilities.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_utilities/3.4.8.0/tc2_utilities.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_utilities/3.4.8.0/tc2_utilities.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_utilities/3.8.1.0/tc2_utilities.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc2_utilities/3.8.1.0/tc2_utilities.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc3_module/3.3.21.0/tc3_module.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc3_module/3.3.21.0/tc3_module.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc3_module/3.3.23.0/tc3_module.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc3_module/3.3.23.0/tc3_module.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc3_module/3.4.5.0/tc3_module.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/beckhoff automation gmbh/tc3_module/3.4.5.0/tc3_module.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/system/base interfaces/3.5.2.0/base_itfs.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/system/base interfaces/3.5.2.0/base_itfs.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/system/cmperrors2 interfaces/3.5.12.0/cmperrors2_itfs.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/system/cmperrors2 interfaces/3.5.12.0/cmperrors2_itfs.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/system/sysdir/3.5.12.0/sysdir.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/system/sysdir/3.5.12.0/sysdir.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/system/sysfile/3.5.9.0/sysfile.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/system/sysfile/3.5.9.0/sysfile.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/system/systypes2 interfaces/3.5.4.0/systypes_itfs.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/system/systypes2 interfaces/3.5.4.0/systypes_itfs.compiled-library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/www.tcunit.org/tcunit/1.2.0.0/tcunit.library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fisothemes/TwinCAT-Dynamic-String-Kit/cd4ffdde0ad9391c0331264fc7a5d0da33373dc0/src/TwinCAT Dynamic String Kit/TcDynStringKitTest/_Libraries/www.tcunit.org/tcunit/1.2.0.0/tcunit.library -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TwinCAT Dynamic String Kit.tsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | PlcTask 11 | 12 | 13 | 14 | 15 | 16 | 17 | TcDynStringKit Instance 18 | {08500001-0000-0000-F000-000000000064} 19 | 20 | 21 | 0 22 | PlcTask 23 | 24 | #x02010030 25 | 26 | 20 27 | 10000000 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | TcDynStringKitTest Instance 38 | {08500001-0000-0000-F000-000000000064} 39 | 40 | 41 | 1 42 | Default 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /src/TwinCAT Dynamic String Kit/TwinCAT Dynamic String Kit.tsproj.bak: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | PlcTask 11 | 12 | 13 | 14 | 15 | 16 | 17 | TcDynStringKit Instance 18 | {08500001-0000-0000-F000-000000000064} 19 | 20 | 21 | 0 22 | PlcTask 23 | 24 | #x02010030 25 | 26 | 20 27 | 10000000 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | TcDynStringKitTest Instance 38 | {08500001-0000-0000-F000-000000000064} 39 | 40 | 41 | 1 42 | Default 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | --------------------------------------------------------------------------------