Deutsch
Quelltexte/ Codesnippets

Abfangen Fehlermeldung Protokollieren Weiterverarbetung

 
- Seite 1 -



KHR
Hallo miteinander,

aus dem Wunsch heraus ein Logbuch für die Fehlermeldungen von Profan einrichten zu können, habe ich mich mit der Prozedur ERRORPROC näher befaßt.

Herausgekommen ist nun ein System, das alle Fehlermeldungen von Profan abfängt, in eine Log-Datei einträgt und mit einem DIALOG abfragt, ob man trotz Fehlermeldung weiterarbeiten will.

Dadurch ist man - besonders in der Testphase - wesentlich flexibler als wenn man nur mit SET ERRORLEVEL die Abbruchschwelle anhebt oder absenkt.

Zum anderen hat man - insbesondere bei Programmen die an andere anderen weitzergegeben werden - die Möglichkeit aus der Logdatei die Fehler nachzuvollziehen.

Die Fehlertexte habe ich der Hilfe von xProfan 11 entnommen.

Der Dialog ist etwas verbesserungswürdig, Ich hab ihn auf die schnelle zusammengeschustert, da ich in meinen Programmen eine andere Routine verwende, die sich nicht so einfach anpassen läßt.

Möge jeder draus machen, was er benötigt.
Error behandlung individuell
Abfangen der Programm-Fehler
Zur Weiterverarbeitung
und Protokollierung
Ab hier ein Testprogramm zur Vorstellung der Funktion
declare FehlerLogDatei$
declare Modul$
Time String 8-stellig
def std_min_sek$(0) @left$(@time$(0)+:+time$(1),8)
Name der Fehler-Log Datei - ich verwende immer Dateinamen die einen Bezug zum Programm bieten
FehlerLogDatei$ = Xprofan-Fehler.log
wird je nach Programmteil/Modul geändert so daß sich Fehler besser lokalisieren lassen und
schon beim ersten Blick auf das Fehlerlog erkannt werden kann, woder Schuh drückt
Modul$ = Testprogramm
CLS
Errorlevel -3 bedeutet: alle Fehler verzweigen auf die Fehlerbehandlungsroutine
muß zu Beginn des Programms eingesetzt werden
Set(ErrorLevel, -3)
Set(OnError, 1)
dieser Code ist nur als test gedacht:

whileloop 200

    WaitInput 100
    print &loop
    diese Variable ist nicht deklariert und löst eine Fehlermeldung aus
    MeinZaehler_1%=0
    Error 331, zu Testzwecken eingebaute Fehlernummer

endwhile

End
Ende des Testprogramms
Fehlerbehandlungsroutine
Name ist ProfanVorgabe:    ErrorProc

ErrorProc

    declare fehler%, FehlerNum%
    Errorlevel wieder auf 1 setzen, damit Fehler in dieser Routine nicht zu Selbstaufrufen führen können
    Set(ErrorLevel, 1)
    Werte übernehmen, da beim auslesen gelöscht wird
    Fehler%    = %Error + 3
    FehlerNum% = %ErrNumber
    Eintrag in Fehlerlogbuch
    kann entfernmt werden sofern nicht gewünscht
    Assign #99,FehlerLogDatei$              Name wird im Hauptprogramm bestimmt

    ifnot @FileExists(FehlerLogDatei$)

        Rewrite #99
        close #99

    endif

    Append #99
    set (Decimals,0)
    set (Numwitdh,0)
    print #99, Date$(3);-;std_min_sek$(), Modul$ ,ErrorProc:, ErLevel:+@str$(Fehler%),
    print #99, ErNum:+ @str$(FehlerNum% ),  Zeile: +@str$(%ErrLine), $ErrStr, $ErrFile
    close #99
    Aufruf des Dialogs zur Entscheidung Abbrechen JA oder NEIN

    if ErrorDialog% (Fehler%,FehlerNum%,%ErrLine,$ErrStr,$ErrFile )

        end

    endif

    Errorlevel wieder auf -3 setzen, damit jeder weitere Fehler wieder auf diese Routine verzweigen kann
    Set(ErrorLevel, -3)

EndProc

Dialog zur Anzeige und Entscheidung

proc ErrorDialog%

    declare dialogWindow&
    declare JaButton&
    declare NeinButton&
    declare DialogEnde%
    declare Rueckgabe%
    declare Ausgabe&[10]
    parameters FeLevel&,FeNum&,FeLine&,FeString$,FeFile$
    dialogWindow& = @Create(Dialog,%hwnd,SYSTEM-Meldung,50,50,400,400)
    Ausgabe&[1] = create (text,dialogWindow&,,5,5,360,20)
    Ausgabe&[2] = create (text,dialogWindow&,,5,35,360,20)
    Ausgabe&[3] = create (text,dialogWindow&,,5,65,360,20)
    Ausgabe&[4] = create (text,dialogWindow&,,5,95,360,50)
    Ausgabe&[5] = create (text,dialogWindow&,,5,155,360,20)
    Ausgabe&[6] = create (text,dialogWindow&,,5,185,360,20)
    Ausgabe&[7] = create (text,dialogWindow&,,5,215,360,20)
    Ausgabe&[8] = create (text,dialogWindow&,,5,245,360,20)
    settext Ausgabe&[1],Errorproc - Fehlerbehandlung
    settext Ausgabe&[2],Fehler-Level: +@str$(FeLevel&)
    settext Ausgabe&[3],Fehlernummer: +@str$(FehlerNum%)
    settext Ausgabe&[4],Fehlercode(FehlerNum%)
    settext Ausgabe&[5],Zeile: +@str$(%ErrLine)
    settext Ausgabe&[6],Code: + $ErrStr
    settext Ausgabe&[7],Datei: +$ErrFile
    settext Ausgabe&[8],Programm abbrechen ???
    JaButton&   = create (BUTTON,dialogWindow&,Abbrechen,5,280,150,30)
    NeinButton& = create (BUTTON,dialogWindow&,Weiterarbeiten,170,280,150,30)

    if FeLevel& =3

        settext dialogWindow&,Schwerer Programmfehler

    elseif  FeLevel& =2

        settext dialogWindow&,Programmfehler

    elseif  FeLevel& =1

        settext dialogWindow&,Fehlerwarnung

    endif

    whilenot DialogEnde%

        waitinput

        if clicked(JaButton&)

            DialogEnde% = 1
            Rueckgabe% = 1

        elseif clicked(NeinButton&)

            DialogEnde% = 1
            Rueckgabe% = 0

        endif

    endwhile

    return Rueckgabe%

endproc

Zuweisen von Gruppe und Texten nach Fehlernummer

proc Fehlercode

    parameters ErrorNum%
    declare ErrorGruppe$
    Fehlercodes und Beschreibungen entnommen aus der Hilfe von Xprofan 11.1

    if ErrorNum% >= 900

        ErrorGruppe$ = Sonstige Fehler:

    elseif ErrorNum% >= 600

        ErrorGruppe$ = Datenbank-Fehler:

    elseif ErrorNum% >= 500

        ErrorGruppe$ = ODBC-Fehler und Meldungen:

    elseif ErrorNum% >= 400

        ErrorGruppe$ = OpenGL-Fehler:

    elseif ErrorNum% >= 300

        ErrorGruppe$ = IO-Fehler:

    elseif ErrorNum% >= 200

        ErrorGruppe$ = Ungültige/fehlende Parameter:

    elseif ErrorNum% >= 100

        ErrorGruppe$ = Programm-Struktur:

    endif

    if ErrorNum% = 100

        return ErrorGruppe$ +Systemvariable unbekannt

    elseif ErrorNum% = 101

        return ErrorGruppe$ +Funktion unbekannt

    elseif ErrorNum% = 102

        return ErrorGruppe$ +Befehl unbekannt

    elseif ErrorNum% = 103

        return ErrorGruppe$ +Integer-Variable erwartet

    elseif ErrorNum% = 104

        return ErrorGruppe$ +Dateikennung erwartet

    elseif ErrorNum% = 105

        return ErrorGruppe$ +Tabellenkennung erwartet

    elseif ErrorNum% = 106

        return ErrorGruppe$ +ENDelseif bzw. ELSE nicht gefunden

    elseif ErrorNum% = 107

        return ErrorGruppe$ +ENDelseif nicht gefunden

    elseif ErrorNum% = 108

        return ErrorGruppe$ +Zu tiefe WHILE-Verschachtelung

    elseif ErrorNum% = 109

        return ErrorGruppe$ +ENDWHILE bzw. WHILE nicht gefunden

    elseif ErrorNum% = 110

        return ErrorGruppe$ +WHILE fehlt

    elseif ErrorNum% = 111

        return ErrorGruppe$ +GOSUB/PROC fehlt

    elseif ErrorNum% = 112

        return ErrorGruppe$ +PROC fehlt

    elseif ErrorNum% = 113

        return ErrorGruppe$ +Label nicht gefunden

    elseif ErrorNum% = 114

        return ErrorGruppe$ +Zu tiefe GOSUB/PROC-Verschachtelung

    elseif ErrorNum% = 115

        return ErrorGruppe$ +ENDPROC nicht gefunden

    elseif ErrorNum% = 116

        return ErrorGruppe$ +DIM% darf nur einmal verwandt werden

    elseif ErrorNum% = 117

        return ErrorGruppe$ +DIM& darf nur einmal verwandt werden

    elseif ErrorNum% = 118

        return ErrorGruppe$ +DIM$ darf nur einmal verwandt werden

    elseif ErrorNum% = 119

        return ErrorGruppe$ +DIM! darf nur einmal verwandt werden

    elseif ErrorNum% = 120

        return ErrorGruppe$ +STARTPRINT fehlt

    elseif ErrorNum% = 121

        return ErrorGruppe$ +Bereichs-Variable erwartet

    elseif ErrorNum% = 122

        return ErrorGruppe$ +Variablenbezeichner fehlerhaft

    elseif ErrorNum% = 123

        return ErrorGruppe$ +Variablenname zu lang

    elseif ErrorNum% = 124

        return ErrorGruppe$ +STARTPAINT fehlt

    elseif ErrorNum% = 125

        return ErrorGruppe$ +SUBPOPUP fehlt

    elseif ErrorNum% = 126

        return ErrorGruppe$ +elseif oder IFNOT fehlt

    elseif ErrorNum% = 127

        return ErrorGruppe$ +Befehl hinter CASE fehlt

    elseif ErrorNum% = 128

        return ErrorGruppe$ +Strukturbezeichner erwartet

    elseif ErrorNum% = 129

        return ErrorGruppe$ +Strukturbezeichner fehlerhaft

    elseif ErrorNum% = 130

        return ErrorGruppe$ +Strukturbezeichner zu lang

    elseif ErrorNum% = 131

        return ErrorGruppe$ +Variablenbezeichner erwartet

    elseif ErrorNum% = 132

        return ErrorGruppe$ +WITH-Verschachtelung nicht erlaubt

    elseif ErrorNum% = 133

        return ErrorGruppe$ +WITH fehlt

    elseif ErrorNum% = 134

        return ErrorGruppe$ +16-Bit DLLs werden von XProfan nicht mehr unterstützt

    elseif ErrorNum% = 135

        return ErrorGruppe$ +Klasse nicht gefunden

    elseif ErrorNum% = 136

        return ErrorGruppe$ +Direktiven sind nur am Zeilenanfang erlaubt

    elseif ErrorNum% = 137

        return ErrorGruppe$ +Zu tiefe IF/IFNOT-Verschachtelung

    elseif ErrorNum% = 138

        return ErrorGruppe$ +$IFDEF oder $IFNDEF fehlt

    elseif ErrorNum% = 139

        return ErrorGruppe$ +Zu tiefe $IFDEF/$IFNDEF-Verschachtelung

    elseif ErrorNum% = 140

        return ErrorGruppe$ +SELECT fehlt

    elseif ErrorNum% = 141

        return ErrorGruppe$ +Zu tiefe SELECT-Verschachtelung

    elseif ErrorNum% = 142

        return ErrorGruppe$ +ENDSELECT bzw. OTHERWISE nicht gefunden

    elseif ErrorNum% = 143

        return ErrorGruppe$ +ENDSELECT nicht gefunden

    elseif ErrorNum% = 144

        return ErrorGruppe$ +ERRORPROC nicht gefunden

    elseif ErrorNum% = 145

        return ErrorGruppe$ +Variablentyp bei VAR nicht erlaubt

    elseif ErrorNum% = 146

        return ErrorGruppe$ +Nur Zuweisung mittels NEW() erlaubt

    elseif ErrorNum% = 147

        return ErrorGruppe$ +Variable doppelt deklariert

    elseif ErrorNum% = 148

        return ErrorGruppe$ +Dynamisches Bereichsarray nicht erlaubt

    elseif ErrorNum% = 149

        return ErrorGruppe$ +Dynamisches Array ist eindimensional

    elseif ErrorNum% = 150

        return ErrorGruppe$ +Dynamisches Array bei INPUT nicht erlaubt

    elseif ErrorNum% = 151

        return ErrorGruppe$ +SUBCLASSPROC nicht gefunden

    elseif ErrorNum% = 152

        return ErrorGruppe$ +SUBCLASSPROC mehr als einmal vorhanden

    elseif ErrorNum% = 153

        return ErrorGruppe$ +ERRORPROC mehr as einmal vorhanden

    elseif ErrorNum% = 154

        return ErrorGruppe$ +Nur in SUBCLASSPROC erlaubt

    elseif ErrorNum% = 155

        return ErrorGruppe$ +DOWNLOADFILE bereits/noch aktiv

    elseif ErrorNum% = 156

        return ErrorGruppe$ +Ungültiger Matrix-Operator

    elseif ErrorNum% = 157

        return ErrorGruppe$ +Ungültiger Operator

    elseif ErrorNum% = 158

        return ErrorGruppe$ +Ungültiges Ersatzzeichen

    elseif ErrorNum% = 199

        return ErrorGruppe$ +Befehl oder Funktion wird nicht mehr unterstützt

    elseif ErrorNum% = 200

        return ErrorGruppe$ +Ungültiger Funktionswert

    elseif ErrorNum% = 201

        return ErrorGruppe$ +Division durch 0

    elseif ErrorNum% = 202

        return ErrorGruppe$ +Falscher Typ für @DTOC$

    elseif ErrorNum% = 203

        return ErrorGruppe$ +Falscher Typ für @CTOD$

    elseif ErrorNum% = 204

        return ErrorGruppe$ +String-Index ist < 1

    elseif ErrorNum% = 205

        return ErrorGruppe$ +Substring-Nr ist < 1

    elseif ErrorNum% = 206

        return ErrorGruppe$ +So viele Elemente sind nicht da

    elseif ErrorNum% = 207

        return ErrorGruppe$ +Bereichsgrenze überschritten

    elseif ErrorNum% = 208

        return ErrorGruppe$ +Kommandozeilenparameter fehlt

    elseif ErrorNum% = 209

        return ErrorGruppe$ +Datei nicht gefunden

    elseif ErrorNum% = 210

        return ErrorGruppe$ +Dateinummer nicht im erlaubten Bereich

    elseif ErrorNum% = 211

        return ErrorGruppe$ +Parameterzahl muss zwischen 0 und 15 liegen

    elseif ErrorNum% = 212

        return ErrorGruppe$ +Zu wenig Parameter

    elseif ErrorNum% = 213

        return ErrorGruppe$ +Funktionsargument fehlt

    elseif ErrorNum% = 214

        return ErrorGruppe$ +Keine Zahl

    elseif ErrorNum% = 215

        return ErrorGruppe$ +Variable nicht deklariert

    elseif ErrorNum% = 216

        return ErrorGruppe$ +Falscher Parametertyp

    elseif ErrorNum% = 217

        return ErrorGruppe$ +Speicher für Integer-Variablen erschöpft

    elseif ErrorNum% = 218

        return ErrorGruppe$ +Speicher für LongInt-Variablen erschöpft

    elseif ErrorNum% = 219

        return ErrorGruppe$ +Speicher für String-Variablen erschöpft

    elseif ErrorNum% = 220

        return ErrorGruppe$ +Speicher für Float-Variablen erschöpft

    elseif ErrorNum% = 221

        return ErrorGruppe$ +Während der Druckausgabe verboten

    elseif ErrorNum% = 222

        return ErrorGruppe$ +Box nicht innerhalb des Fensters

    elseif ErrorNum% = 223

        return ErrorGruppe$ +Negative Fenstergröße

    elseif ErrorNum% = 224

        return ErrorGruppe$ +ICON nicht vorhanden

    elseif ErrorNum% = 225

        return ErrorGruppe$ +ICON nicht vorhanden! (Nur 0..4

    elseif ErrorNum% = 226

        return ErrorGruppe$ +Fehler bei der Menüerstellung

    elseif ErrorNum% = 227

        return ErrorGruppe$ +Zu tiefe Menüverschachtelung

    elseif ErrorNum% = 228

        return ErrorGruppe$ +Bitmap nicht ladbar

    elseif ErrorNum% = 229

        return ErrorGruppe$ +Bitmap konnte nicht gespeichert werden

    elseif ErrorNum% = 230

        return ErrorGruppe$ +Cursor nicht vorhanden! (Nur 0..16

    elseif ErrorNum% = 231

        return ErrorGruppe$ +Negative Elemente sind nicht erlaubt

    elseif ErrorNum% = 232

        return ErrorGruppe$ +Zu viele Elemente

    elseif ErrorNum% = 233

        return ErrorGruppe$ +Das Element gibt es nicht

    elseif ErrorNum% = 234

        return ErrorGruppe$ +Fehler bei der Tonerzeugung

    elseif ErrorNum% = 235

        return ErrorGruppe$ +Drucken ist nicht möglich

    elseif ErrorNum% = 236

        return ErrorGruppe$ +Fehler bei der HardCopy

    elseif ErrorNum% = 237

        return ErrorGruppe$ +Der Befehl setzt ein Fenster vorraus

    elseif ErrorNum% = 238

        return ErrorGruppe$ +Stringende fehlt

    elseif ErrorNum% = 239

        return ErrorGruppe$ +Speicher für Bereichs-Variablen erschöpft

    elseif ErrorNum% = 240

        return ErrorGruppe$ +Zu wenig Speicher für Bereichs-Variable

    elseif ErrorNum% = 241

        return ErrorGruppe$ +Bereichsvariable ist bereits DIMensioniert

    elseif ErrorNum% = 242

        return ErrorGruppe$ +Ungültiges Fenster-Handle

    elseif ErrorNum% = 243

        return ErrorGruppe$ +Bereichsvariable ist nicht DIMensioniert

    elseif ErrorNum% = 244

        return ErrorGruppe$ +Der Text paßt nicht komplett in die Bereichsvariable

    elseif ErrorNum% = 245

        return ErrorGruppe$ +Die Parameterzahl unterscheidet sich von der Parameterbeschreibung

    elseif ErrorNum% = 246

        return ErrorGruppe$ +Ungültiger Typ in der Parameterbeschreibung

    elseif ErrorNum% = 247

        return ErrorGruppe$ +Fehler beim Laden der DLL

    elseif ErrorNum% = 248

        return ErrorGruppe$ +Funktion in DLL nicht vohanden

    elseif ErrorNum% = 249

        return ErrorGruppe$ +Zwischen STARTPAINT/ENDPAINT verboten

    elseif ErrorNum% = 250

        return ErrorGruppe$ +SETTIMER fehlt

    elseif ErrorNum% = 251

        return ErrorGruppe$ +Der TIMER ist schon eingestellt

    elseif ErrorNum% = 252

        return ErrorGruppe$ +Menü ist nicht ladbar

    elseif ErrorNum% = 253

        return ErrorGruppe$ +Speicher für Array-Variablen erschöpft

    elseif ErrorNum% = 254

        return ErrorGruppe$ +Maximal drei Dimensionen erlaubt

    elseif ErrorNum% = 255

        return ErrorGruppe$ +Klammern nicht ausgewogen

    elseif ErrorNum% = 256

        return ErrorGruppe$ +Zu viele Strukturvariablen

    elseif ErrorNum% = 257

        return ErrorGruppe$ +Fehler in Strukturdefinition

    elseif ErrorNum% = 258

        return ErrorGruppe$ +Zu viele Strukturen

    elseif ErrorNum% = 259

        return ErrorGruppe$ +Struktur nicht definiert

    elseif ErrorNum% = 260

        return ErrorGruppe$ +Definition im Header fehlt

    elseif ErrorNum% = 261

        return ErrorGruppe$ +Unbekanntes Create-Objekt

    elseif ErrorNum% = 262

        return ErrorGruppe$ +Unbekannter Schalter

    elseif ErrorNum% = 263

        return ErrorGruppe$ +Unbekannte Subfunktio

    elseif ErrorNum% = 264

        return ErrorGruppe$ +Ungültige WHILELOOP-Parameter

    elseif ErrorNum% = 265

        return ErrorGruppe$ +Doppelter Name in Struktur oder Klasse

    elseif ErrorNum% = 266

        return ErrorGruppe$ +Die beerbte Klasse muss an erster Stelle stehen

    elseif ErrorNum% = 267

        return ErrorGruppe$ +Methode fehlt

    elseif ErrorNum% = 268

        return ErrorGruppe$ +Prozedur nicht gefunden

    elseif ErrorNum% = 269

        return ErrorGruppe$ +Kein freier CALLBACK mit der gewünschten Parameterzahl

    elseif ErrorNum% = 270

        return ErrorGruppe$ +Kein Zugriff auf geschützte Eigenschaft/Methode

    elseif ErrorNum% = 271

        return ErrorGruppe$ +Eine Struktur kann keine Klasse erben

    elseif ErrorNum% = 272

        return ErrorGruppe$ +Operation nicht auf Objekte anwendbar

    elseif ErrorNum% = 273

        return ErrorGruppe$ +Variable nicht in Struktur vorhanden

    elseif ErrorNum% = 274

        return ErrorGruppe$ +Eigenschaft/Methode nicht in Objekt vorhanden

    elseif ErrorNum% = 275

        return ErrorGruppe$ +Zuweisung auf dieses Objekt nicht möglich

    elseif ErrorNum% = 276

        return ErrorGruppe$ +Struktur bzw. Bereich zu klein

    elseif ErrorNum% = 277

        return ErrorGruppe$ +Unbekannter Arraytyp

    elseif ErrorNum% = 278

        return ErrorGruppe$ +Zuweisung nur auf undimensionierte Bereichsvariable möglich

    elseif ErrorNum% = 279

        return ErrorGruppe$ +Fehler in SQL-Anweisung

    elseif ErrorNum% = 280

        return ErrorGruppe$ +Funktion nicht auf dieses Fensterobjekt anwendbar

    elseif ErrorNum% = 281

        return ErrorGruppe$ +Unbekanntes db-Methode

    elseif ErrorNum% = 282

        return ErrorGruppe$ +Das Array paßt nicht komplett in die Liste

    elseif ErrorNum% = 283

        return ErrorGruppe$ +Ein Bereichsarray ist hier nicht erlaubt

    elseif ErrorNum% = 284

        return ErrorGruppe$ +Fehler im Regulären Ausdruck

    elseif ErrorNum% = 285

        return ErrorGruppe$ +So viele Parameter gibt es nicht

    elseif ErrorNum% = 286

        return ErrorGruppe$ +&Index ist nur in einer Array-Zuweisung erlaubt

    elseif ErrorNum% = 287

        return ErrorGruppe$ +Matrix-Zuweisung hier nicht möglich

    elseif ErrorNum% = 288

        return ErrorGruppe$ +Array-Bezeichner erwartet

    elseif ErrorNum% = 289

        return ErrorGruppe$ +Beide Arrays müssen den selben Typ haben

    elseif ErrorNum% = 290

        return ErrorGruppe$ +Das Quell-Array paßt nicht komplett in das Ziel-Array

    elseif ErrorNum% = 291

        return ErrorGruppe$ +Array-Zuweisung hier nicht möglich

    elseif ErrorNum% = 292

        return ErrorGruppe$ +Dynamische Arrays bei MAT nicht erlaubt

    elseif ErrorNum% = 293

        return ErrorGruppe$ +Unbekannter INTERSECT-Typ

    elseif ErrorNum% = 294

        return ErrorGruppe$ +Array für Zuweisung muß vom gleichen Typ sein

    elseif ErrorNum% = 295

        return ErrorGruppe$ +UserMessage nicht vorhanden

    elseif ErrorNum% = 296

        return ErrorGruppe$ +Ungültiger Format-String

    elseif ErrorNum% = 297

        return ErrorGruppe$ +Unbekannter Aufrufmodus

    elseif ErrorNum% = 298

        return ErrorGruppe$ +Metafile nicht ladbar

    elseif ErrorNum% = 300

        return ErrorGruppe$ +Datei kann nicht gelesen werden

    elseif ErrorNum% = 301

        return ErrorGruppe$ +Datei kann nicht erzeugt werden

    elseif ErrorNum% = 302

        return ErrorGruppe$ +Fehler beim Lesen

    elseif ErrorNum% = 303

        return ErrorGruppe$ +Fehler beim Schreiben

    elseif ErrorNum% = 304

        return ErrorGruppe$ +PROF16.EXE nicht ausführbar oder fehlt

    elseif ErrorNum% = 305

        return ErrorGruppe$ +REGISTRY

    elseif ErrorNum% = 306

        return ErrorGruppe$ +Datei nicht gefunden

    elseif ErrorNum% = 307

        return ErrorGruppe$ +Fensterobjekt nicht vorhanden

    elseif ErrorNum% = 308

        return ErrorGruppe$ +Datei kann nicht kopiert werden

    elseif ErrorNum% = 309

        return ErrorGruppe$ +Ungültige Datei

    elseif ErrorNum% = 310

        return ErrorGruppe$ +Kein freies Datei-Handle

    elseif ErrorNum% = 311

        return ErrorGruppe$ +FindFirst$ fehlt

    elseif ErrorNum% = 350

        return ErrorGruppe$ +Internetverbindung nicht möglich

    elseif ErrorNum% = 351

        return ErrorGruppe$ +URL konnte nicht geöffnet werden

    elseif ErrorNum% = 400

        return ErrorGruppe$ +OpenGL ist nicht initialisiert

    elseif ErrorNum% = 401

        return ErrorGruppe$ +Devicekontext für OpenGL konnte nicht erstellt werden

    elseif ErrorNum% = 402

        return ErrorGruppe$ +Kein passendes Pixelformat für OpenGL gefunden

    elseif ErrorNum% = 403

        return ErrorGruppe$ +OpenGL-Pixelformat kann nicht gesetzt werden

    elseif ErrorNum% = 404

        return ErrorGruppe$ +OpenGL-Renderkontext kann nicht erzeugt werden

    elseif ErrorNum% = 405

        return ErrorGruppe$ +OpenGL-Renderkontext kann nicht aktiviert werden

    elseif ErrorNum% = 406

        return ErrorGruppe$ +Ungültige Textur-Datei

    elseif ErrorNum% = 407

        return ErrorGruppe$ +Fehler in XPGL-Datei

    elseif ErrorNum% = 408

        return ErrorGruppe$ +XPGL-Daten nicht gefunden

    elseif ErrorNum% = 409

        return ErrorGruppe$ +Zu viele XPGL-Dateien geladen

    elseif ErrorNum% = 410

        return ErrorGruppe$ +Ungültiger XPGL-Typ

    elseif ErrorNum% = 411

        return ErrorGruppe$ +Ungültger Objekttyp

    elseif ErrorNum% = 412

        return ErrorGruppe$ +Ungültige XPGL-Nummer

    elseif ErrorNum% = 500

        return ErrorGruppe$ +ODBC ist nicht initialisiert

    elseif ErrorNum% = 501

        return ErrorGruppe$ +Fehler bei der ODBC-Initialisierung

    elseif ErrorNum% = 502

        return ErrorGruppe$ +ODBC.DLL nicht gefunden

    elseif ErrorNum% = 503

        return ErrorGruppe$ +ODBC-Fehle

    elseif ErrorNum% = 504

        return ErrorGruppe$ +Sätze bearbeitet

    elseif ErrorNum% = 505

        return ErrorGruppe$ +Operation erfolgreich

    elseif ErrorNum% = 506

        return ErrorGruppe$ +Ergebnisdatei kann nicht geöffnet werden

    elseif ErrorNum% = 507

        return ErrorGruppe$ +Zu große Ergebnismenge

    elseif ErrorNum% = 600

        return ErrorGruppe$ +dB-Fehler

    elseif ErrorNum% = 601

        return ErrorGruppe$ +Datei nicht gefunden

    elseif ErrorNum% = 602

        return ErrorGruppe$ +Doppelter Feldnam

    elseif ErrorNum% = 603

        return ErrorGruppe$ +Ungültige Feldläng

    elseif ErrorNum% = 604

        return ErrorGruppe$ +Ungültige Dezimalstelle

    elseif ErrorNum% = 605

        return ErrorGruppe$ +Index-Datei nicht in Ordnun

    elseif ErrorNum% = 606

        return ErrorGruppe$ +Feld nicht gefunde

    elseif ErrorNum% = 607

        return ErrorGruppe$ +Dateiname fehlerhaf

    elseif ErrorNum% = 608

        return ErrorGruppe$ +Schlüsselfeld nicht in Ordnun

    elseif ErrorNum% = 609

        return ErrorGruppe$ +Tabellennummer nicht im erlaubten Bereich

    elseif ErrorNum% = 610

        return ErrorGruppe$ +Tabellennummer noch nicht vergeben

    elseif ErrorNum% = 611

        return ErrorGruppe$ +Formel nicht in Ordnun

    elseif ErrorNum% = 612

        return ErrorGruppe$ +Feld beim Lesen nicht gefunde

    elseif ErrorNum% = 613

        return ErrorGruppe$ +Feldnummer beim Lesen nicht gefunde

    elseif ErrorNum% = 614

        return ErrorGruppe$ +Feld zum Schreiben nicht gefunde

    elseif ErrorNum% = 615

        return ErrorGruppe$ +Feldnummer zum Schreiben nicht gefunden

    elseif ErrorNum% = 616

        return ErrorGruppe$ +Index-Dateiname fehlerhaft

    elseif ErrorNum% = 617

        return ErrorGruppe$ +Ungültige Eingabe

    elseif ErrorNum% = 618

        return ErrorGruppe$ +Sonstige Fehler: Es ist keine Tabelle geöffnet

    elseif ErrorNum% = 900

        return ErrorGruppe$ +Dieser Befehl ist in der Sharewareversion nicht vorhanden

    elseif ErrorNum% = 901

        return ErrorGruppe$ +Nur xxxx Zeilen sind erlaubt! (Kommat ab XProfan 11 nicht mehr vor!

    elseif ErrorNum% = 902

        return ErrorGruppe$ +Zeile zu lang (max. 32767 Zeichen)

    elseif ErrorNum% = 903

        return ErrorGruppe$ +INCLUDE-Datei nicht gefunden

    elseif ErrorNum% = 904

        return ErrorGruppe$ +INCLUDE-Verschachtelung verboten

    elseif ErrorNum% = 905

        return ErrorGruppe$ +Keine gültige XProfan Datei

    elseif ErrorNum% = 906

        return ErrorGruppe$ +Programmdatei fehlerhaft

    elseif ErrorNum% = 913

        return ErrorGruppe$ +HEADER-Datei nicht gefunden

    elseif ErrorNum% = 914

        return ErrorGruppe$ +HEADER-Verschachtelung verboten

    elseif ErrorNum% = 915

        return ErrorGruppe$ +UNIT-Datei nicht gefunden

    elseif ErrorNum% = 916

        return ErrorGruppe$ +Unpassende Runtime-Version

    elseif ErrorNum% = 999

        return ErrorGruppe$ +Programm abgebrochen

    else

        return unbekannter Fehler

    endif

endproc

 
Gruß
Karl-Heinz
WIN XP home/Pro / XPROFAN 11 / P2CPP
ATMEL + BASCOM Fan
30.12.2008  
 



 
- Seite 1 -



KHR
Hallo JAC

danke für Deine Antwort.

Ich versteh zwar was Du meinst, seh aber nicht so recht, was Du willst


1.
Errorlevel wieder auf -3 setzen, damit jeder weitere Fehler wieder auf diese Routine verzweigen kann
Set(ErrorLevel, -3)

-3???

2. Du veränderst in der ErrorProc NumWidth und Decimals ohne es zurückzusetzen und vergibst das Dateihandle 99 ohne zu wissen, ob es schon benutzt wird.



Ich hab den Code aus meinem Programm herausgenommen, wie er da läuft. Den Dialog hab ich ergänzt, weil der originale nicht zu übernehmen war.

Da ich ne gewisse Struktur in meinen Dateinummern habe kann ich bei mir die 99 problemlos verwenden.

Dasselbe gilt bei mir mit NumWidth und Decimals
Wers anders braucht, muß es sich halt anpassen. Ich denke, es wird den wenigsten einfallen ihre Code-Schnipsel so umzustricken, daß sie jeder allgemeingültig direkt verwenden kann.

Normalerweise such ich erst mal mit der Suchfunktion hier im Forum, Wenn ich da nichts zum klauen finde suche ich die Quellcodesammlung des MMJ durch. Finde ich dadurch was brauchbares ist es gut.

Wenn nicht, dann bastele ich mir das halt selbst und biete es selbstverständlich anderen hier im Forum an.

Ich behaupte ja nicht, daß jeder den Code plug and play bei sich einbauen und verwenden kann/soll.
Die meisten Code-Schnipsel muß man anpassen.

Und genau dafür dokumentiere ich etwas ausführlicher als die meisten anderen hier.

Wenn Fehler drin sind - klar - darauf aufmerksan machen.

Wenn man Verbesserungsvorschläge hat - klar - hier posten

Kokurrenz machen? hier bei den Code-Schnipseln?? versteh ich nicht.

Jeder der Lust hat liefert ab was er hat/will/kann.
Wers besser kann, macht halt seine eigenen Schnipsel rein.
Je mehr sich hier sammelt, desto weniger oft kommt es vor, daß das Rad an 9 verschiedenen Orten erfunden wird.

So seh ich das
 
Gruß
Karl-Heinz
WIN XP home/Pro / XPROFAN 11 / P2CPP
ATMEL + BASCOM Fan
30.12.2008  
 



KHR
Jeder der Lust hat liefert ab was er hat/will/kann.
Wers besser kann, macht halt seine eigenen Schnipsel rein.
Je mehr sich hier sammelt, desto weniger oft kommt es vor, daß das Rad an 9 verschiedenen Orten erfunden wird.
So seh ich das


So ist es gedacht.

Jacs Anmerkungen und Anmerkungen sind wichtig - darum hat jedes Snippet auch einen Thread.

Bleibt erst somit offen für jeden, es z.B. zu verbessern...
 
30.12.2008  
 




Jac
de
Lad
Hallo KHR.

Ich wollte auch nur sagen, dass ich einiges in deinem Quelltext entdeckt habe, dass genauer untersucht werden sollte. Set(Errorlevel,-3) ist laut der Hilfe nicht definiert, was da passiert kann ich ohne es auszuprobieren nicht vorhersagen. Und das mit dem Dateihandle und NumWidth etc.; damit wollte ich doch nur darauf hinweisen, dass es damit Probleme geben kann. Und das mit der Konkurrenz war nur so gemeint, dass ich zufällig aus einem eigenen Programm etwas ähnliches rumliegen hatte und das noch schnell anhängen wollte. Natürlich kann sich jeder das beste herauspicken und anpassen, meine Proc ist auch nicht optimal.

In diesem Sinne:
Einen guten Rutsch (bitte nicht zu weit rutschen) und ein schönes neues Jahr 2009,
Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
31.12.2008  
 




Michael
Wodrich
Hallo.

Ich sehe es oft, daß Ihr mit Str$() kämpft und hierfür Decmals und NumWidth abschaltet.

XProfan hat auch hierfür eine sehr elegante Lösung.
Die Zahl als String, wie immer man sie formatiert haben möchte, liefert Format$() am Besten.

Eine einfache Ganzzahl aus einer Floatzahl:
Ganzzahl_String$ = Format$(#0,Floatzahl!)

...und nochmal, jetzt mit Tausenderpunkten:
Ganzzahl_String$ = Format$(#,0,Floatzahl!)

Decimals und NumWidth werden hier nicht benutzt/benötigt.

Und: Ab XProfan 11 kann sogar die Syntax der Programmiersprache C mit Format$() genutzt werden.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
02.01.2009  
 



Michael Wodrich
Hallo.

Ich sehe es oft, daß Ihr mit Str$() kämpft und hierfür Decmals und NumWidth abschaltet.

halte ich fürs Eleganteste.
 
02.01.2009  
 




Michael
Wodrich
(seufz)
 
Programmieren, das spannendste Detektivspiel der Welt.
02.01.2009  
 




Jac
de
Lad
Da muss ich iF zustimmen.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
02.01.2009  
 




Alexander
Beloch
Stimmt...
 
No risk,no fun.
02.01.2009  
 




Jörg
Sellmeyer
Hm - bei diesem kommt dann aber einfach nur 1 heraus:
print str$(int(1.45600))
waitinput

Michaels Variante ist schon richtig.

Nachtrag:


Eine einfache Ganzzahl aus einer Floatzahl:


Oh - übersehen...
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
02.01.2009  
 




Frank
Abbing

Eine einfache Ganzzahl aus einer Floatzahl:


Ist doch dann korrekt mit Int(). Ich mache es ebenso.
 
02.01.2009  
 



 
- Seite 2 -



Jac
de
Lad
Es ging ja auch darum bei Integerwerten die dann entstehenden Nullen nach dem Komma abzuschneiden.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
02.01.2009  
 




Michael
Wodrich
auf jeden Fall für Tausenderpunkte und
natürlich für floats (wenn ich denn an den dezimalpunkt im Formatstring denke).

Hier ging es um die Ganzzahlen und das umständliche Abstellen der Nachkommastellen
 
Programmieren, das spannendste Detektivspiel der Welt.
02.01.2009  
 




Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

15.749 Betrachtungen

Unbenanntvor 0 min.
Erasmus.Herold28.11.2023
RudiB.08.03.2022
QuaraMan28.08.2021
AndreasS27.11.2018
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie