Deutsch
Quelltexte/ Codesnippets

Abfangen Fehlermeldung Protokollieren Weiterverarbetung

 

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  
 




Jac
de
Lad
Die Idee finde ich gut, aber:

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 will dir keine Komkurrenz machen, aber hier mal mein Vorschlag, wie ich ihn in Gamsav verwende (nur Loggen in einer Datei):
Struct OSVERSIONINFO=dwOSVersionInfoSize&,dwMajorVersion&,dwMinorVersion&,dwBuildNumber&,dwPlatformId&,szCSDVersion$(128)
Def ZwQueryInformationProcess(5) !NTDLL,ZwQueryInformationProcess
Def Globalmemorystatus(1) !KERNEL32,GlobalMemoryStatus

proc WinVer_

    Select Val($WinVer)

        CaseOf 3.5

        Return Windows NT 3.5

        CaseOf 3.51

        Return Windows NT 3.51

        CaseOf 4.0

        Return Windows 95 oder NT 4.0

        CaseOf 4.1

        Return Windows 98/98SE

        CaseOf 4.9

        Return Windows ME

        CaseOf 5

        Return Windows 2000

        CaseOf 5.1

        Return Windows XP

        CaseOf 5.2

        Return Windows 2003

        CaseOf 6

        Return Windows Vista

        CaseOf 6.1

        Return Windows Vista SP1
        Otherwise
        Return $WinVer

    EndSelect

endproc

errorproc

    declare ef&,a$,errnumber%,ms#,size&
    errnumber%=%ErrNumber
    ef&=Assign($WinPath+\LoggedErrors.txt)

    if FileExists($WinPath+\LoggedErrors.txt)

        Append ef&
        Print #ef&,

    else

        Rewrite ef&

    endif

    Print #ef&,Fehlerbericht für Gamsav +$Ver
    Print #ef&,Zeitstempel: +Date$(0)+, +Time$(0)+:+Time$(1)

    Select %Error

        CaseOf 0

        a$=Kein Fehler

        CaseOf 1

        a$=Fehler

        CaseOf 2

        a$=Warnung

        Caseof 3

        a$=Hinweis
        Otherwise
        a$=unbekannt

    EndSelect

    Print #ef&,Art des Fehlers: +a$
    Print #ef&,Fehlernummer: +Str$(ErrNumber%)
    Print #ef&,Fehlerzeile: +Str$(%ErrLine)
    Print #ef&,Fehlerstring: +If($ErrStr=,kein Fehlerstring,$ErrStr)
    Print #ef&,Erweiterter Fehlerstring: +Error_(ErrNumber%)
    Print #ef&,Benutzer: +user$in Gamsav global deklariert!!!
    Dim ms#,OSVERSIONINFO
    ms#.dwOSVersionInfoSize&=148
    GetVersionEx(ms#)
    Print #ef&,Windows-Version: +WinVer_()+ (+$WinVer+, Build +Str$(ms#.dwBuildNumber&)+)
    Print #ef&,Architektur: +If(IsWin64(),x64,x86)
    Dim ms#,32
    Globalmemorystatus(ms#)
    Print #ef&,Speicher in Gebrauch: +Str$(Long(ms#,4))+%
    Print #ef&,Physikalischer Speicher gesamt: +ConvertBytes(Long(ms#,8),2)
    Print #ef&,Freier physikalischer Speicher: +ConvertBytes(Long(ms#,12),2)
    Print #ef&,Größe der Auslagerungsdatei: +ConvertBytes(Abs(Long(ms#,16)),2)
    Print #ef&,Freier Speicher in der Auslagerungsdatei: +ConvertBytes(Abs(Long(ms#,20)),2)
    Print #ef&,Gesammter virtueller Speicher: +ConvertBytes(Long(ms#,24),2)
    Print #ef&,Freier virtueller Speicher: +ConvertBytes(Long(ms#,28),2)

    if w2000%Global deklariert, gibt an, ob win2000 oder höher benutzt wird!!!

        ZwQueryInformationProcess(hpr&,3,hpr#,44,Addr(size&))
        Print #ef&,Speicherbelegung: +Format$(##,##0kB,Long(hpr#,16)/1024)

    endif

    Dispose ms#
    Close ef&
    Assign ef&,

endproc

proc Error_

    Parameters err%
    declare err$

    Select err%

        caseof 300

        err$=Datei kann nicht gelesen werden.

        caseof 301

        err$=Datei kann nicht erzeugt werden

        caseof 302

        err$=Fehler beim Lesen.

        caseof 303

        err$=Fehler beim Schreiben.

        caseof 304

        err$=PROF16.EXE nicht ausführbar oder fehlt!

        caseof 305

        err$=REGISTRY

        caseof 306

        err$=Datei nicht gefunden.

        caseof 600

        err$=dB-Fehler.

        caseof 601

        err$=Datei nicht gefunden.

        caseof 602

        err$=Doppelter Feldname.

        caseof 603

        err$=Ungültige Feldlänge.

        caseof 604

        err$=Ungültige Dezimalstellen.

        caseof 605

        err$=Index-Datei nicht in Ordnung.

        caseof 606

        err$=Feld nicht gefunden.

        caseof 607

        err$=Dateiname fehlerhaft.

        caseof 608

        err$=Schlüsselfeld nicht in Ordnung.

        caseof 609

        err$=abellennummer nicht im erlaubten Bereich!

        caseof 610

        err$=Tabellennummer noch nicht vergeben!

        caseof 611

        err$=Formel nicht in Ordnung.

        caseof 612

        err$=Feld beim Lesen nicht gefunden.

        caseof 613

        err$=Feldnummer beim Lesen nicht gefunden.

        caseof 614

        err$=Feld zum Schreiben nicht gefunden.

        caseof 615

        err$=Feldnummer zum Schreiben nicht gefunden.

        caseof 616

        err$=Index-Dateiname fehlerhaft.

        caseof 617

        err$=Ungültige Eingabe.

        caseof 100

        err$=Systemvariable unbekannt.

        caseof 101

        err$=Funktion unbekannt.

        caseof 102

        err$=Befehl unbekannt.

        caseof 103

        err$=Integer-Variable erwartet.

        caseof 104

        err$=Dateikennung erwartet.

        caseof 105

        err$=Tabellenkennung erwartet.

        caseof 106

        err$=ENDIF bzw. ELSE nicht gefunden.

        caseof 107

        err$=ENDIF nicht gefunden.

        caseof 108

        err$=Zu tiefe WHILE-Verschachtelung.

        caseof 109

        err$=ENDWHILE bzw. WHILE nicht gefunden.

        caseof 110

        err$=WHILE fehlt.

        caseof 111

        err$=GOSUB/PROC fehlt.

        caseof 112

        err$=PROC fehlt.

        caseof 113

        err$=Label nicht gefunden.

        caseof 114

        err$=Zu tiefe GOSUB/PROC-Verschachtelung.

        caseof 115

        err$=ENDPROC nicht gefunden.

        caseof 116

        err$=qDIM%q darf nur einmal verwandt werden.

        caseof 117

        err$=qDIM&q darf nur einmal verwandt werden.

        caseof 118

        err$=qDIM$q darf nur einmal verwandt werden.

        caseof 119

        err$=qDIM!q darf nur einmal verwandt werden.

        caseof 120

        err$=STARTPRINT fehlt.

        caseof 121

        err$=Bereichs-Variable erwartet.

        caseof 122

        err$=Variablenbezeichner fehlerhaft.

        caseof 123

        err$=Variablenname zu lang.

        caseof 124

        err$=STARTPAINT fehlt.

        caseof 125

        err$=SUBPOPUP fehlt.

        caseof 126

        err$=IF oder IFNOT fehlt.

        caseof 127

        err$=Befehl hinter CASE fehlt.

        caseof 128

        err$=Strukturbezeichner erwartet.

        caseof 129

        err$=Strukturbezeichner fehlerhaft.

        caseof 130

        err$=Strukturbezeichner zu lang.

        caseof 131

        err$=Variablenbezeichner erwartet.

        caseof 132

        err$=WITH-Verschachtelung nicht erlaubt.

        caseof 133

        err$=WITH fehlt.

        caseof 134

        err$=16-Bit DLLs werden von XProfan nicht mehr unterstützt.

        caseof 135

        err$=Klasse nicht gefunden.

        caseof 136

        err$=Direktiven sind nur am Zeilenanfang erlaubt.

        caseof 137

        err$=Zu tiefe IF/IFNOT-Verschachtelung.

        caseof 200

        err$=Ungültiger Funktionswert.

        caseof 201

        err$=Division durch 0.

        caseof 202

        err$=Falscher Typ für DTOC$.

        caseof 203

        err$=Falscher Typ für CTOD$.

        caseof 204

        err$=String-Index ist < 1.

        caseof 205

        err$=Substring-Nr ist < 1.

        caseof 206

        err$=So viele Elemente sind nicht da.

        caseof 207

        err$=Bereichsgrenze überschritten.

        caseof 208

        err$=Kommandozeilenparameter fehlt.

        caseof 209

        err$=Datei nicht gefunden.

        caseof 210

        err$=Dateinummer nicht im erlaubten Bereich.

        caseof 211

        err$=Parameterzahl muss zwischen 0 und 15 liegen.

        caseof 212

        err$=Zu wenig Parameter.

        caseof 213

        err$=Funktionsargument fehlt.

        caseof 214

        err$=Keine Zahl.

        caseof 215

        err$=Variable nicht deklariert.

        caseof 216

        err$=Falscher Parametertyp.

        caseof 217

        err$=Speicher für Integer-Variablen erschöpft.

        caseof 218

        err$=Speicher für LongInt-Variablen erschöpft.

        caseof 219

        err$=Speicher für String-Variablen erschöpft.

        caseof 220

        err$=Speicher für Float-Variablen erschöpft.

        caseof 221

        err$=Während der Druckausgabe verboten.

        caseof 222

        err$=Box nicht innerhalb des Fensters.

        caseof 223

        err$=Negative Fenstergröße.

        caseof 224

        err$=ICON nicht vorhanden.

        caseof 225

        err$=ICON nicht vorhanden! (Nur 0..4).

        caseof 226

        err$=Fehler bei der Menüerstellung.

        caseof 227

        err$=Zu tiefe Menüverschachtelung.

        caseof 228

        err$=Bitmap nicht ladbar.

        caseof 229

        err$=Bitmap konnte nicht gespeichert werden.

        caseof 230

        err$=Cursor nicht vorhanden! (Nur 0..16).

        caseof 231

        err$=Es sind lediglich 0 bis xxxxx Elemente erlaubt.

        caseof 232

        err$=Zu viele Elemente.

        caseof 233

        err$=Das Element gibt es nicht.

        caseof 234

        err$=Fehler bei der Tonerzeugung.

        caseof 235

        err$=Drucken ist nicht möglich.

        caseof 236

        err$=Fehler bei der HardCopy.

        caseof 237

        err$=Der Befehl setzt ein Fenster voraus.

        caseof 238

        err$=Stringende fehlt.

        caseof 239

        err$=Speicher für Bereichs-Variablen erschöpft.

        caseof 240

        err$=Zu wenig Speicher für Bereichs-Variable.

        caseof 241

        err$=Bereichsvariable ist bereits DIMensioniert.

        caseof 242

        err$=Ungültiges Fenster-Handle.

        caseof 243

        err$=Bereichsvariable ist nicht DIMensioniert.

        caseof 244

        err$=Der Text paßt nicht komplett in die Bereichsvariable.

        caseof 245

        err$=Die Parameterzahl unterscheidet sich von der Parameterbeschreibung.

        caseof 246

        err$=Ungültiger Typ in der Parameterbeschreibung.

        caseof 247

        err$=Fehler beim Laden der DLL.

        caseof 248

        err$=Funktion in DLL nicht vohanden.

        caseof 249

        err$=Zwischen STARTPAINT/ENDPAINT verboten.

        caseof 250

        err$=SETTIMER fehlt.

        caseof 251

        err$=Der TIMER ist schon eingestellt.

        caseof 252

        err$=Menü ist nicht ladbar.

        caseof 253

        err$=Speicher für Array-Variablen erschöpft.

        caseof 254

        err$=Maximal drei Dimensionen erlaubtn.

        caseof 255

        err$=Klammern nicht ausgewogen.

        caseof 256

        err$=Zu viele Strukturvariablen.

        caseof 257

        err$=Fehler in Strukturdefinition.

        caseof 258

        err$=Zu viele Strukturen.

        caseof 259

        err$=Struktur nicht definiert.

        caseof 260

        err$=Definition im Header fehlt.

        caseof 261

        err$=Unbekanntes Create-Objekt.

        caseof 262

        err$=Unbekannter Schalter.

        caseof 263

        err$=Unbekannte Subfunktion.

        caseof 264

        err$=Ungültige WHILELOOP-Parameter.

        caseof 265

        err$=Doppelter Name in Struktur oder Klasse.

        caseof 266

        err$=Die beerbte Klasse muss an erster Stelle stehen.

        caseof 267

        err$=Methode fehlt.

        caseof 268

        err$=Prozedur nicht gefunden.

        caseof 269

        err$=Kein freier CALLBACK mit der gewünschten Parameterzahl.

        caseof 270

        err$=Kein Zugriff auf geschützte Eigenschaft/Methode.

        caseof 271

        err$=Eine Struktur kann keine Klasse erben.

        caseof 272

        err$=Operation nicht auf Objekte anwendbr.

        caseof 273

        err$=Variable nicht in Struktur vorhanden.

        caseof 274

        err$=Eigenschaft/Methode nicht in Objekt vorhanden.

        caseof 275

        err$=Zuweisung auf dieses Objekt nicht möglich.

        caseof 276

        err$=Struktur bzw. Bereich zu klein.

        caseof 277

        err$=Unbekannter Arrayty.

        caseof 278

        err$=Zuweisung nur auf undimensionierte Bereichsvariable möglich.

        caseof 279

        err$=Fehler in SQL-Anweisung.

        caseof 500

        err$=ODBC ist nicht initialisiert.

        caseof 501

        err$=Fehler bei der ODBC-Initialisierung.

        caseof 502

        err$=ODBC.DLL nicht gefunden.

        caseof 503

        err$=ODBC-Fehler.

        caseof 504

        err$=Sätze bearbeitet.

        caseof 505

        err$=Operation erfolgreich.

        caseof 506

        err$=Ergebnisdatei kann nicht geöffnet werden.

        caseof 507

        err$=Zu große Ergebnismenge.

        caseof 900

        err$=Dieser Befehl ist in der Sharewareversion nicht vorhanden.

        caseof 901

        err$=Nur 9999 Zeilen sind erlaubt.

        caseof 902

        err$=Zeile zu lang (max. 254 Zeichen).

        caseof 903

        err$=INCLUDE-Datei nicht gefunden.

        caseof 904

        err$=INCLUDE-Verschachtelung verboten.

        caseof 905

        err$=Keine gültige XProfan Datei.

        caseof 906

        err$=Programmdatei fehlerhaft.

        caseof 913

        err$=HEADER-Datei nicht gefunden.

        caseof 914

        err$=HEADER-Verschachtelung verboten.

        caseof 915

        err$=UNIT-Datei nicht gefunden.

        caseof 916

        err$=Unpassende Runtime-Version.

        caseof 999

        err$=Programm abgebrochen.
        otherwise
        err$=Unbekannter Fehler!

    endselect

    Return err$

endproc

proc ConvertBytes

    Parameters s!,c%
    declare l%

    While Not(s!<1024) AND (l%<9)

        Inc l%
        s!=s!/1024

    endwhile

    Return Format$(If(l%,###0.+MkStr$(0,c%),####0),s!)+ +Mid$(kMGTPEZY,l%,1)+B

endproc

Proc IsWin64

    declare d&,h&,r%
    d&=UseDLL($SysPath+\Kernel32.dll)
    h&=External(kernel32,GetProcAddress,d&,IsWow64Process)

    if h&<>0

        External(kernel32,IsWow64Process,External(kernel32,GetCurrentProcess),Addr(r%))

    endif

    FreeDLL d&
    Return r%

endproc


Ich hoffe, ich habe alle relevanten Procs mitkopiert.
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
30.12.2008  
 




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  
 




Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

15.741 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