David's Interblag "use strict;"

7Okt/150

Meine erste verkaufte Anwendung

Was immer wieder zu verwunderten Nachfragen bei Personalern führte, war ein Eintrag in meinem Lebenslauf, der wie folgt aussah:

Jun. 2002 - Erste verkaufte Anwendung, erstellt mit Borland Delphi 6

Datenbankanbindung (dBase IV) und –Web-Upload für Sage „GS-Auftrag“ als Schnittstelle zu einem PHP-Webshop für ein mittelständisches bayerisches Unternehmen auf dem Gebiet der Hydraulik- und Forsttechnik.

Inzwischen habe ich mich entschlossen, diesen Eintrag ersatzlos zu streichen, möchte über diese ungewöhnliche Geschichte dennoch bloggen.

veröffentlicht unter: Delphi keine Kommentare
5Okt/100

SMSAlerter 0.2 USV- und Akkualarm via SMS

2008 schrieb ich eine Anwendung die einem Windows Serveradministrator den Versand von SMS bei einem niedrigen USV-Akkustand ermöglichte. Sie ist denkbar einfach aufgebaut: die USV muss als Akku im System installiert sein, dies ist ein Standard und bei allen mir bekannten Herstellern der Fall. Ebenfalls muss ein AT-Hayes kompatibles GSM-Modem (zB ein Handy, verbunden via USB oder COM) netzfähig sein - eine UMTS-Karte ist ebenfalls einsatzfähig.

Der SMSAlerter 0.2 prüft regelmäßig den Ladezustand der Akkus und sendet bei eintreffen eines definierten Zustandes eine SMS über das Handy an einen Empfänger.

veröffentlicht unter: Delphi keine Kommentare
4Mrz/090

Großhochzeit: C#, Delphi, Assembler und COM

Ein Feature das mit großer Wahrscheinlichkeit in zukünftigen Versionen von .NET noch implementiert werden wird, ist (managed/inline-) Assembler in seine Projekte einzubinden. In einigen Hochsprachen mit "echtem" Compiler ist dies bereits seit vielen Jahren Standard: C++, TurboPascal, FreePascal, Delphi, freeBASIC, usw.

Zudem findet man in alten mächtigen Source-Code-Archiven oft bis zur Perversion optimierte Algorithmen, die der Autor bereits in Inline-ASM implementiert hat. Es wäre doch zu schade diese nicht weiter nutzen zu können...

Folgenden Code fand ich im SwissDelphiCenter:
http://www.swissdelphicenter.ch/de/showcode.php?id=2049
(Ein Instring-Algorithmus von Vanja Fuckar, 100% inline-ASM)

28Feb/090

Delphi: Winamp-Titel auslesen

Winamp-Titel in Delphi auslesen

Winamp-Titel in Delphi auslesen

Um mit Delphi den aktuellen Winamp-Titel auszulesen benötigt man nur eine kleine Funktion. Der Zugriff erfolgt über die WinAPI.


function GetWinampFilename(): String;
var
    hwndWinamp, ProcessHandle: THandle;
    dat2: array[0..500] of Char;
    temp, MPointer: Cardinal;
begin
  //Bitte nicht wundern, die Fensterbezeichnung ist korrekt und funktioniert bei allen Winamp-Versionen:
  hwndWinamp:=FindWindow('Winamp v1.x',nil);
  MPointer:= SendMessage(hwndWinamp,WM_USER,SendMessage(hwndWinamp,WM_USER,0 , 125), 212);
  GetWindowThreadProcessId(hwndWinamp,ProcessHandle);
  hwndWinamp:= OpenProcess(PROCESS_ALL_ACCESS,False,ProcessHandle);
  ReadProcessMemory(hwndWinamp, Pointer(MPointer), @dat2,500,temp);
  CloseHandle(hwndWinamp);
  Result:= String(dat2);
end;

28Feb/090

Parse/Split in Delphi 6

Ein großes Manko an Delphi (bis zur .NET-isierung) war/ist eine fehlende Funktion für das zuverlässige und schnelle Parsing von Strings. Folgende Funktion begleitet mich bereits seit 2002 durch fast alle Delphi-Projekte:


function Parse(Char, S: string; Count: Integer): string;
var
  I: Integer;
  T: string;
begin
  if S[Length(S)] <> Char then
    S := S + Char;
  for I := 1 to Count do
  begin
    T := Copy(S, 0, Pos(Char, S) - 1);
    S := Copy(S, Pos(Char, S) + 1, Length(S));
  end;
  Result := T;
end;