Napisałem sobie kiedyś
prosty programik w HTA, którego zadaniem miało być ułatwienie mi życia poprzez "zarządzanie" zadaniami.
Obsługa programu jest i była prosta, można:
- dodać nową sprawę
- zaznaczyć, że sprawa została skończona
- odwołać sprawę
Żadnej filozofii.Jednak trochę mi mało tej funkcjonalności i wymyśliłem sobie, że dodam możliwość tworzenia
subtasków, czy jak kto woli
podzadań.Ponieważ istniejący kod nie jest zbyt łatwy w utrzymaniu to od razu postanowiłem pisać wszystko od podstaw bazując tylko na wyglądzie starej wersji.I tu zaczęły się kłopoty ;-)Naturalną metodą na przechowywanie subtasków było dołożenie do obiektu przechowującego zadanie tablicy
podzadań i metody do ich dodawania:
function Task(descr,added,ended,nr,parent){this.nr=nr;this.parent=parent;this.descr=descr;this.added=added;this.ended=ended;this.subtasks = new Array();this.add=function(subtask){ this.subtasks.push(subtask);}};
ale to spowodowało, że kod do zapisywania do pliku:
function saveTasks(fName,array){var file=fso.OpenTextFile(fName,2,true);for (j=0; jzaczął złośliwie zapisywać do pliku z zadaniami również treść metody dodającej podzadania ;-)Rozwiązaniem okazało się zastoswanie sztuczki polegającej na takiej zmianie Tasks
(obiektu przechowującego zadania) by te pola, które mają zostać zapisane do pliku wzbogacić o "_" na początku ;-)function Task(descr,added,ended,nr,parent){ this._nr=nr;this._parent=parent;this._descr=descr;this._added=added;this._ended=ended;this.subtasks = new Array();this.add=function(subtask){ this.subtasks.push(subtask);}};
Dzięki temu po zmianie metody saveTasks()
do postaci:function saveTasks(fName,array){var file=fso.OpenTextFile(fName,2,true);for (j=0; jif (field.indexOf("_")==0)for (field in element){ line+=(element[field]+'|');}file.WriteLine(line);};file.Close();}
Do pliku trafiać zaczęły tylko te wartości, które powinny.Tutaj oczywiście pojawił się kolejny problem ;-)Ale o tym może kiedy indziej, a teraz idę spać bo jutro ważna narada w pracy :-)[Jutro o tym dlaczego informatycy są złymi programistami ;-)]
Podobne postybeta
Sudoku - rozwiązanie doskonałe ;p
[Updated] Czytanie Pocketa ;-)
Sposób na Google Buzz i jego znikające komentarze ;-)
Żenienie Todoist z Obsidian przy pomocy Pythona ;-)
2016 będzie rokiem "nietypowym"
Brak komentarzy:
Prześlij komentarz