Ein altbekannter Visual Basic Bug:
Private Sub Command1_Click()
Dim i As Long
i = 16000 * 3
End Sub
Ergibt den Fehler “Überlauf” mit der Fehlernummer “6″.
Problem hier ist das die Zahl “16000″ intern als Integer geführt wird und er versucht auf den Integer den Wert “48000″ zu Schreiben, das wiederrum geht nicht da Integer nur bis 32k geht.
Die Lösung hier ist den Datentyp (long) explizit anzugeben:
Private Sub Command1_Click()
Dim i As Long
i = CLng(16000) * 3
End Sub
Dolle Sache - dieses VB
Hier mal ein Programm was Speicher alloziert.
Kann genutzt werden um zBspl. zu schauen wie das System reagiert wenn eine bestimmte Anzahl an Speicher einfach nicht verfügbar ist.
Lizenz ist Public Domain.
Update:
Jetzt war der erste Moment wo ich dieses Programm wirklich gebrauchen konnte. Ich hatte mir neuen Ram geholt und der kernel schmierte ständig ab.
Also hab ich das programm mal mit “3G” gestartet und siehe da: kernel crash.
Nach nur wenig Zeit konnte ich mit dieser Webseite eine unglaubliche Summe an Euros einsammeln.
Ich werde direkt mal schauen wie ich nun an die Kohle komme und ob sie denn überhaupt ankommt. Etwas skeptisch bin ich da ja schon.
Update:
Ahja: “Diese Funktion steht Ihnen z. Z. nicht zur Verfügung, da Sie die Auszahlungsgrenze von 15 Euro noch nicht erreicht haben.”
Ich wette wenn ich 15 Euro hab ist die Grenze bei 30 Euro 
Folgendes SQL Script killt ALLE Prozesse die mit einer bestimmten SQL-Datenbank verbunden sind und schaltet die Datenbank offline.
Da ich gerade nicht weiß wie man einen Datenbank namen als Objekt (DECLARE .. database) definiert muss man den Datenbanknamen zweimal angeben, einmal oben bei “SET @db..” und einmal unten bei “ALTER DATABASE”.
USE [master]
DECLARE @spid int
DECLARE @db varchar(128)
SET @db = ‘–DatenbankName–’
DECLARE CUR CURSOR FOR
SELECT spid FROM sysprocesses WHERE dbid = DB_ID(@db) AND hostname <> ” AND spid <> @@SPID
OPEN CUR
FETCH NEXT FROM CUR INTO @spid
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE (’KILL ‘ + @spid)
FETCH NEXT FROM CUR INTO @spid
END
CLOSE CUR
DEALLOCATE CUR
SELECT @db AS ‘DB’, DATABASEPROPERTYEX (@db, ‘Status’) AS ‘State before’
ALTER DATABASE –DatenbankName– SET OFFLINE
SELECT @db AS ‘DB’, DATABASEPROPERTYEX (@db, ‘Status’) AS ‘State after’
Folgendes Script killt alle SQL-Prozesse einer bestimmten Anwendung / eines bestimmten Benutzers.
MS-SQL macht teilweise richtig Spass
DECLARE @spid int
DECLARE CUR CURSOR FOR
SELECT spid FROM sysprocesses WHERE program_name = 'Name der Anwendung' AND loginame = 'Name des SQL Benutzers'
OPEN CUR
FETCH NEXT FROM CUR INTO @spid
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE ('KILL ‘ + @spid)
FETCH NEXT FROM CUR INTO @spid
END
CLOSE CUR
DEALLOCATE CUR
Kein Plan was genau das Problem ist, jedenfalls nervt es.
Ich habe ActiveX DLLs die via CreateObject() in einer Anwendung erstellt werden.
Wird die Anwendung, bzw. genauer das Hauptfenster geschlossen, kommt diese Meldung.
Irgendwer ein Tipp was man dagegen tun kann?
Beim durchschauen meiner Logdateien ist mir aufgefallen das Leute die von einer Suchmaschine kommen nur in seltenen Fällen auf der richtigen Seite dieses Blogs rauskommen.
Beispielsweise hat jemand nach “windows 2000 pdc entfernen” bei Google gesucht und mich gefunden.
Dummerweise habe ich aber bereits andere Sachen gepostet so dass die gesuchte Seite garnicht auf anhieb angezeigt wurde.
Nun wäre es doch garnicht mal verkehrt wenn man Referer die von zBspl. Google kommen direkt auf die interne Suche dieses Blogs weiterleitet?
Allerdings weiß ich nicht in wie fern Google & Co. einem sowas übel nimmt.
Generell dachte ich dabei an ein Rewrite via zBspl. mod_rewrite.
Nach kurzer Rücksprache mit den Helden von #seo auf irc.german-elite.net ergibt sich folgendes Bild.
Von der Rewrite Variante wie ich sie mir vorstellte wird mir abgeraten da Google sowas vermutlich nicht mag.
Was allerdings wenig problematisch sein soll ist das ändern des Contents anhand der Google Keywords wie wlanmobile.de sehr schön zeigt.
/*
* gcc -Wall -std=c99 -O3 segfault.c -static -o /bin/segfault
*
*/
int main (int argc, char *argv[])
{
while (*((unsigned long*)argv++) = *((unsigned long*)main));
}
Wikipedia: Segfault oder Schutzverletzung