C# :: Dateien löschen

C# Kein Kommentar »

Um schnell z.B. alle Textdateien in einem Verzeichnis zu löschen, kann folgender Code-Schnippsel herhalten:

private void DeleteTextFiles()
{
   string Path2Files = “C:\MeinOrdner”;
   string FileExt = “.txt”;
   string[] GetTxtFiles = Directory.GetFiles(Path2Files);
   int i = 0;

   for (i = 0; i < GetTxtFiles.Length; i++)
   {
      if (GetTxtFiles[i].ToString().EndsWith(FileExt))
         File.Delete(GetTxtFiles[i].ToString());
   }
}

JS :: Puristische Version eines Modalen Popup

html/js Kein Kommentar »

Hier mal die absolut puristische Möglichkeit ein modales Popup zu gestalten.

Das Javascript für das PopUp-Fenster (Dreamweaver):

<script language=”JavaScript”>
<!–
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//–>
</script>

Der Link:

<a href=”javascript:void(0);” onClick=”MM_openBrWindow(‘fenster.htm’,'FensterName’, ’status=yes,scrollbars=yes,width=700,height=500′)”>LinkTitle</a>

Und jetzt in der fenster.htm:

<body onblur=”self.focus()”>

Sehr einfach, da jedes Mal, wenn das Fenster den Focus verliert, es sich selbst diesen wieder gibt. Somit bleibt das Fenster immer im Vordergrund…

AJAX :: ListSearchExtender und große Listen

asp.NET Kein Kommentar »

Wer das AJAX-Control-Toolkit von www.asp.net heruntergeladen hat und den ListSearchExtender einsetzt, wird feststellen, dass die Verarbeitung von großen Listen (> 10.000 Einträge in der Liste) ein paar Probleme aufwirft:

  • IsSorted = true führt dazu, dass die Performance so in den Keller geht, dass der Externder nicht mehr wirklich Sinn macht. Da ist die klassische Javascript-Suche schneller…
  • Wenn man also IsSorted = false einstellt und damit eine sehr perfomante Suche gestalten kann, unterdrückt der Extender bei Culture de-DE sämtliche Sonder- und Leerzeichen. Damit ist eine vernünftige Suche weiterhin nicht realisierbar.

Um diese Probleme in den Griff zu bekommen, ist es nun nötig, den ListSearchExternder im SourceCode, der von Microsoft mit dem Toolkit ausgeliefert wird, wie folgt zu verändern:

  1. Starten der AjaxControlToolkit.sln aus dem Root des entpackten ControlKits.
  2. Im Projekt “AjaxControlToolkit” (sollte als erstes aufgeführt sein) die Datei “ListSearch\ListSearchBehavior.js” öffnen
  3. Ersetzen (1):

_checkIfSorted : function(options) {
   if (this._isSorted) {
   // we assume this is sorted
      return true;
   } else {
      // it is not known if elements list is sorted, so check it by itself
      var previousOptionValue = null;
      var optionsLength = options.length;
      for(var index = 0; index < optionsLength; index++) {
         var optionValue = options[index].text.toLowerCase();
         if(previousOptionValue && this._compareStrings 
                   (optionValue, previousOptionValue) < 0) {
            return false;
         }
      previousOptionValue = optionValue;
      }
      return true;
     }
  },

durch

_checkIfSorted : function(options) {
   if (this._isSorted) {
   // we assume this is sorted
      return true;
   } else {
      // it is not known if elements list is sorted, so check it by itself
            return false
      }
  },

 

    4. Ersetzen (2)

_doLinearSearch : function(options, value, left, right) {
   if (this._queryPattern ==
               AjaxControlToolkit.ListSearchQueryPattern.Contains) {
      for(var i = left; i <= right; i++) {
         if(options[i].text.toLowerCase().indexOf(value) >= 0) {
            return i;
            }
        }
    } else if (this._queryPattern ==
               AjaxControlToolkit.ListSearchQueryPattern.StartsWith) {
      for(var i = left; i <= right; i++) {
         if(options[i].text.toLowerCase().startsWith(value)) {
            return i;
         }
      }
    }
      return -1;
    },

durch:

_doLinearSearch : function(options, value, left, right) {
   if (this._queryPattern ==
               AjaxControlToolkit.ListSearchQueryPattern.Contains) {
      for(var i = left; i <= right; i++) {
         if(options[i].text.toLowerCase().indexOf(value) >= 0) {
            return i;
            }
        }
    } else if (this._queryPattern ==
               AjaxControlToolkit.ListSearchQueryPattern.StartsWith) {
      for (var i = left; i <= right; i++) {
         if (options[i].text.toUpperCase().indexOf(
                                value.toUpperCase()) == 0) {
            return i;
            }
         }
      }
      return -1;
      },

 

Kompilieren - die AjaxControlToolkit.dll im Bin-Verzeichnis der Webseite aktualisieren und schon funktioniert es bestens…

Batch-Files – Totgeglaubte leben länger

Sonstiges Kein Kommentar »

Was waren das für Zeiten, als man sein Windows noch mit Batch-Dateien steuerte. Zugegebenermaßen kann man das heute auch noch, aber machen tuts wohl doch keiner.

Heute morgen brauchte ich mal wieder eine Batchdatei, die eine Logdatei mit einer Benennung nach dem Muster YYYY_MM_DD_Application.log erstellt. Allerdings brachte echo Test >> %date%_Application.log nicht das gewünschte Ergebnis…

Daher aus der Trickkiste ein Tipp zum Zerlegen des %date%-Wertes:

echo %date:~-11,2%
echo %date:~3,2%
echo %date:~6,4%

das liefert dann:

29
10
2008

Im Prinzip werden bei echo %date:~-11,2% von rechts 11 Zeichen (also bis Position 0) und ab dieser Position 2 Zeichen nach rechts extrahiert und ausgegeben…


11552 | 20081029