ERLEDIGT Fehler abfangen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

ERLEDIGT Fehler abfangen

Beitrag von Pure_Beginner »

Hallo Gemeinde,

Habe mich längere Zeit mit Pure Basic befasst und so einiges über Prozeduren Parameterübergabe usw. gelernt.

Nun möchte ich meinen Code stabiler gegen mögliche Fehler machen, weiß aber Leider nicht genau wie.

Hier ein Post meiner Prozedur.

Code: Alles auswählen

Procedure  p_KB(Dirty.a, Laenge.u, Breite.u, Dicke.u)

  Protected.s  L, B, Mitteilung, Titel, ProgrammName, EX_Zelle
  Protected.a  Kante1=1, Kante2=1, Kante3=0, Kante4=0, Winkel=4, Kappen=4, Euros=12, Senkkopf=0, TAB=0, Baender=0, Grundplatten=0, Flach=0, Zapfen=0

  Select Laenge                                                                ;Uberprüfen der Eingabe und zuweisen der Werte
    Case 0 To 300
      L                 = "2"
      ProgrammName      = "E_3010KB"
    Case 301 To 400
      L                 = "3"
      ProgrammName      = "E_3010KB"
    Case 401 To 450
      L                 = "4"
      ProgrammName      = "E_3010KB"
    Case 451 To 500
      L                 = "5"
      ProgrammName      = "E_3010KB"
    Case 501 To 600
      L                 = "6"
      ProgrammName      = "E_3020KB"
    Case 601 To 700
      L                 = "7"
      ProgrammName      = "E_3020KB"
    Case 701 To 800
      L                 = "8"
      ProgrammName      = "E_3020KB"
    Case 801 To 900
      L                 = "9"
      ProgrammName      = "E_3020KB"
    Case 901 To 1000
      L                 = "10"
      ProgrammName      = "E_3020KB"
    Default
      Mitteilung = "Kostruktionsboden mit dieser Länge sind nicht vorgesehen"   ;Fehlerbearbeitung
      Titel      = "Meldung..."
      Mitteilung(Titel, Mitteilung)                                         ;Unterprogramm zur Meldungsausgabe
  EndSelect


  Select Breite
    Case 0 To 100
      B = "B"
    Case 101 To 200
      B = "C"
    Case 201 To 300
      B = "D"
    Case 301 To 350
      B = "E"
    Case 351 To 400
      B = "F"
    Case 401 To 500
      B = "G"
    Case 501 To 550
      B = "H"
    Case 551 To 600
      B = "I"
    Default
      Mitteilung = "Kostruktionsboden mit dieser Breite sind nicht vorgesehen"   ;Fehlerbearbeitung
      Titel      = "Meldung..."
      Mitteilung(Titel, Mitteilung)                                         ;Unterprogramm zur Meldungsausgabe
  EndSelect
  
  EX_Zelle = L + B

  If Dirty = 0
    p_Entfernen(Winkel, Kappen, Euros, Senkkopf, TAB, Baender, Grundplatten, Flach, Zapfen)
  Else
    p_Hinzufuegen(ProgrammName, EX_Zelle, Kante1, Kante2, Kante3, Kante4, Winkel, Kappen, Euros, Senkkopf, TAB, Baender, Grundplatten, Flach, Zapfen, Laenge, Breite, Dicke)
  EndIf
EndProcedure

Wäre für jeden Tipp dankbar.
Wie immer möchte ich verstehen was ich tue (Bitte mit Kommentar)


PS.
Im Anfängerbuch über PureBasic war leider nichts zu finden.

Besten Dank im Voraus.
Zuletzt geändert von Pure_Beginner am 10.08.2012 00:54, insgesamt 1-mal geändert.
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Fehler abfangen

Beitrag von STARGÅTE »

Was genau ist dnen deine Frage?
Nun möchte ich meinen Code stabiler gegen mögliche Fehler machen, weiß aber Leider nicht genau wie.
Was heißt in deinem Fall "stabiler"?
  • Möchtest du Werte von Variablen, die einen Fehler erzeugen könnten, korrigieren?
  • Möchtest du eine Fehlerausgabe erstellen, sodass die Prozedur beendet wird?
Ich weiß nicht was "Mitteilung(Titel, Mitteilung)" macht, aber das ist doch der richtige Weg.
Nur sollte die Prozedur dann auch abgebrochen werden, wenn es zu einem Fehler kommt.
Zudem sollte der Fehler auch von den hoheren Prozeduren die diese unter Prozedur aufrufen, verstanden werden und auch reagieren.

Dabei gibt es mehrere Möglichkeiten:
  • Prozeduren geben bei Erfolg immer eine Zahl ungleich 0 zurück, und bei einem Fehler 0. (zB PB-Funktionen)
  • Prozeduren geben bei Erfolg immer 0 zurück, und bei einem Fehler die Fehlernummer. (einige WIn-API-Funktionen)
  • Der Rückgabewert der Prozedur ist egal, aber es wird eine Fehler-Variable überprüft.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: Fehler abfangen

Beitrag von Pure_Beginner »

@STARGÅTE

Danke für deine schnelle Antwort.

Genau das habe ich gemeint, wie komme ich z.B. aus der Prozedur heraus wenn ich einen Fehler Abfangen habe ?
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Fehler abfangen

Beitrag von RSBasic »

Code: Alles auswählen

ProcedureReturn YourErrorValue
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: Fehler abfangen

Beitrag von Pure_Beginner »

@RS Basic

Wäre es zuviel verlangt wenn du mir noch etwas mehr Code für die Übergabe und die Übernahme der Parameter zur Verfügung stellst?

Der Name ist Programm ich bin ziemlicher Anfänger.

Grüße Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Fehler abfangen

Beitrag von RSBasic »

@Pure_Beginner
Kann ich machen:

Code: Alles auswählen

;Sorgt dafür, dass alle Variablen, die du verwendest, vorher definieren musst
EnableExplicit

Procedure DeineFunktion(DeinParameter.s)
  ;Hier wird dein Parameter, welcher übergeben wurde, ausgegeben
  Debug DeinParameter
  
  ;Hier wird irgendwas verarbeitet
  ;und mal angenommen, hier entsteht ein Fehler,
  ;dann soll er die eigene Funktion vorzeitig abbrechen und #False (Wert=0) zurückgeben
  ProcedureReturn #False
  
  ;Wenn deine Funktion problemlos ohne Fehler durchgeführt wurde, dann soll er #True (Wert=1) zurückgeben.
  ;ProcedureReturn #True
  
  ;Info: Wenn du in dieser Prozedur irgendwas machst, dann soll er danach entweder #True (kein Fehler) ausgeben oder #False (Fehler) zurückgeben, damit du außerhalb deiner Funktion prüfen kannst, ob es erfolgreich war oder nicht.

EndProcedure

;Deine Funktion wird aufgerufen und es wird zusätzlich ermittelt, was deine Funktion zurückgibt, ob True (erfolgreich) oder False (Fehler)
If DeineFunktion("Hallo")
  Debug "Deine Funktion wurde erfolgreich durchgeführt."
Else
  Debug "Ein Fehler ist aufgetreten."
EndIf
Ich hoffe, es ist für dich jetzt verständlicher. Ansonsten einfach nachfragen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: Fehler abfangen

Beitrag von Pure_Beginner »

@RS Basic

Das ist ja einfach :shock: :shock: :shock: .
Wäre ich selbst nie drauf gekommen.

Besten Dank für deine Hilfe
Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
BI2
Beiträge: 146
Registriert: 26.11.2006 19:07

Re: Fehler abfangen

Beitrag von BI2 »

@Pure_Beginner

lies Dir mal im Einsteigerbuch mal das Kapitel 8 und dort im speziellen das Unterkapitel "Minimieren von Fehlern und deren Behandlung" durch. Dort wird die ganze Thematik der Fehlerbehandlung recht ausführlich beschrieben.

Gruß, BI2
PB 5.7x (x64), LinuxMint 18.3 - Xfce (x64)

Einsteigerbuch: PureBasic - Eine Einführung in die Computer Programmierung
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: Fehler abfangen

Beitrag von Pure_Beginner »

@B12

Habs gefunden.
Das Buch ist genial, gerade für Einsteiger wie mich.
Besten Dank :praise:
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Antworten