|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 26.08.2016, 19:03 Titel: Schachturnierorganistionsprogramm (STOP) |
|
|
Ich habe einen Quellcode bei https://www.freebasic-portal.de/porticula/stop-1828.html hochgeladen. In dem Programm bringt der mir mit -exx Zugriffsfehler die ich nicht beheben bzw. finden kann??? Ich muss beim Programmieren irgendwo einen Fehler gemacht haben.
Der Fehler tritt immer dann auf, wenn ich 2001 Teilnehmer lade und auf Paarungen klicke und dann eine der Pfeiltasten drücke!!!Wird zuerst ausgelost, hängt sich das Programm ohne -exx nicht auf. Vielleicht kann sich mal jemand den Quellcode ansehen? Achtung, es sind viele Kommentare vorhanden und vieles noch im Beta Zustand!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4648 Wohnort: ~/
|
Verfasst am: 26.08.2016, 19:15 Titel: |
|
|
-exx hat ja den Vorteil, dass das Programm eine Rückmeldung über den Fehler gibt. Was gibt es denn aus?
(muss natürlich aus der Konsole heraus gestartet werden, sonst kannst du die Meldung nicht lesen)
Wenn sich die problematische Stelle durch die Fehlermeldung nicht genau lokalisieren lässt (bei allgemeinen Speicherzugriffsverletzungen), kannst du dich z. B. mit GETKEY und Debugmeldungen über PRINT an die Stelle annähern.
Ich kann dir leider nicht aktiv bei der Suche helfen; bei WinAPI macht mein Linux-Rechner nicht mit. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 26.08.2016, 22:14 Titel: |
|
|
nemored hat Folgendes geschrieben: | -exx hat ja den Vorteil, dass das Programm eine Rückmeldung über den Fehler gibt. Was gibt es denn aus?
(muss natürlich aus der Konsole heraus gestartet werden, sonst kannst du die Meldung nicht lesen)
Wenn sich die problematische Stelle durch die Fehlermeldung nicht genau lokalisieren lässt (bei allgemeinen Speicherzugriffsverletzungen), kannst du dich z. B. mit GETKEY und Debugmeldungen über PRINT an die Stelle annähern.
Ich kann dir leider nicht aktiv bei der Suche helfen; bei WinAPI macht mein Linux-Rechner nicht mit. | Keinen Windowsrechner zur Verfügung? Das ist aber schade. Ich verwende eine Datei-Lade-Funktion. Deswegen die Windows-Bibliotheken!
Ich bekomme folgende Meldung:
Zitat: | Aborting due to runtime error 6 (out of bounds array access) at line 1474 of Stop.bas::AUSLOSUNG() |
Habe schon alles erdenkliche versucht, den Fehler zu beheben. Bis jetzt keine Chance!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1235 Wohnort: Ruhrpott
|
Verfasst am: 26.08.2016, 23:21 Titel: |
|
|
Hallo ALWIM!
Bei mir meckert der Compiler erst einmal über die Zeile Code: | REDIM paarungen((1 TO (ppr+58)), 1 TO 2, 1 TO RAZ) ' Paarungen neu initialisieren
| aber das verschwindet, wenn man die Klammern entfernt: Code: | REDIM paarungen(1 TO (ppr+58), 1 TO 2, 1 TO RAZ) ' Paarungen neu initialisieren
|
Zum Testen bräuchte ich eine Teilnehmerdatei, so kann ich im Augenblick leider nicht mehr sagen. In Zeile 1474 steht bei mirScheint mir etwas unlogisch.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 26.08.2016, 23:52 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Hallo ALWIM!
Bei mir meckert der Compiler erst einmal über die Zeile Code: | REDIM paarungen((1 TO (ppr+58)), 1 TO 2, 1 TO RAZ) ' Paarungen neu initialisieren
| aber das verschwindet, wenn man die Klammern entfernt: Code: | REDIM paarungen(1 TO (ppr+58), 1 TO 2, 1 TO RAZ) ' Paarungen neu initialisieren
|
Zitat: | Zum Testen bräuchte ich eine Teilnehmerdatei, so kann ich im Augenblick leider nicht mehr sagen. In Zeile 1474 steht bei mirScheint mir etwas unlogisch.
Gruß
grindstone |
In Zeile 1474 steht bei mir
Scheint mir etwas unlogisch. |
Die Klammern sind irrtümlich mit reingekommen. Keine Ahnung wieso?
Wieso? Unterprogramm ist an dieser Stelle zu ende! Deswegen auch der Befehl "END SUB".
Teilnehmerdatei kommt...
Ich habe mir die per Kopieren erstellt! Einen Spieler abgespeichert und dann die Datei mit dem Texteditor geöffnet. Str+C und Str+V bis 2000 Spieler vorhanden waren. Die Suche geht weiter...
Vielen Dank an alle die mithelfen!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4648 Wohnort: ~/
|
Verfasst am: 27.08.2016, 00:32 Titel: |
|
|
Zitat: | Wieso? Unterprogramm ist an dieser Stelle zu ende! Deswegen auch der Befehl "END SUB". |
Die Zeile 1474: END SUB passt nicht zur Fehlermeldung "Aborting due to runtime error 6 (out of bounds array access) at line 1474 of Stop.bas::AUSLOSUNG()".
Daher wäre interessant, was denn in deinem Editor an Stelle 1474 auftaucht.
Mögliche kritische Stelle könnte das hier sein:
Code: | Spieler(paarungen(j+Brett,2,Runde)) |
Da würde ich erst einmal prüfen, ob Brett einen sinnvollen Wert annimmt, also ob j+Brett im erforderlichen Bereich von 1 bis ppr+58 liegt. Wenn das soweit passt, könnte es noch sein, dass in paarungen(j+Brett,2,Runde) ein Wert drin steht, der nicht als Index für Spieler() erlaubt ist. Das sind jetzt die einzigen zwei Ansatzstellen für einen "out of bound array access", die ich entdecken kann. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 27.08.2016, 00:40 Titel: |
|
|
nemored hat Folgendes geschrieben: | Zitat: | Wieso? Unterprogramm ist an dieser Stelle zu ende! Deswegen auch der Befehl "END SUB". |
Die Zeile 1474: END SUB passt nicht zur Fehlermeldung "Aborting due to runtime error 6 (out of bounds array access) at line 1474 of Stop.bas::AUSLOSUNG()".
Daher wäre interessant, was denn in deinem Editor an Stelle 1474 auftaucht.
Mögliche kritische Stelle könnte das hier sein:
Code: | Spieler(paarungen(j+Brett,2,Runde)) |
Da würde ich erst einmal prüfen, ob Brett einen sinnvollen Wert annimmt, also ob j+Brett im erforderlichen Bereich von 1 bis ppr+58 liegt. Wenn das soweit passt, könnte es noch sein, dass in paarungen(j+Brett,2,Runde) ein Wert drin steht, der nicht als Index für Spieler() erlaubt ist. Das sind jetzt die einzigen zwei Ansatzstellen für einen "out of bound array access", die ich entdecken kann. | Das Interessante dabei ist ja, dass die Fehlermeldung nur kommt, wenn nicht ausgelost wird. Wird vorher ausgelost, läuft das Programm erstmal soweit! Ich werde jetzt mal schauen, ob es an den zwei Sachen liegt. Wenn nicht, was dann? _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1235 Wohnort: Ruhrpott
|
Verfasst am: 27.08.2016, 07:36 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Wenn nicht, was dann? | Dann ist es etwas anderes.
Mit dem geposteten Code erscheint als Fehlerzeile 1462: Code: | If Spieler(paarungen(j+Brett,1,Runde)) <> "" THEN FONT LTRIM$(STR$(Brett+j)) + "| " + LTRIM$(STR$(paarungen(j+Brett,1,Runde))) + " " + Spieler(paarungen(j+Brett,1,Runde)), 9+sx, 43, &hFFFFFF, &hAAAAAA, &h555555, 0, 0 |
Ich habe die Werte mal ausdrucken lassen. Bevor ausgelost wird, sind sowohl "Brett" als auch "j" 0. Damit ist der 1. Index 0 und außerhalb des definierten Bereichs. Code: | REDIM paarungen(1 TO (ppr+58), 1 TO 2, 1 TO RAZ) ' Paarungen neu initialisieren |
Also entweder die Untergrenze auf 0 setzen oder dafür sorgen, daß "Brett" > 0 ist. Rein logisch scheint mir das Problem aber eher beim Wert von "ppr" zu liegen (zumindest soweit ich die Funktionsweise des Programms in der kurzen Zeit verstanden habe), der zu diesem Zeitpunkt noch nicht gesetzt (also 0) ist.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4648 Wohnort: ~/
|
Verfasst am: 27.08.2016, 08:22 Titel: |
|
|
ppr wird ganz am Anfang von AUSLOSUNG gesetzt:
Code: | IF TAZ < 3 THEN EXIT SUB
' Rundensystem
IF Paarungssystem = 1 THEN
' Partien pro Runde ermitteln!
IF TAZ MOD 2 <> 0 THEN
ppr = (TAZ - 1) / 2
ppr += 1
RAZ = TAZ
' IF ppr < 0 THEN ppr = 1
' IF RAZ < 0 THEN RAZ = 1
ELSE
ppr = TAZ / 2
RAZ = TAZ - 1
' IF ppr < 0 THEN ppr = 1
' IF RAZ < 0 THEN RAZ = 1
END IF
|
Wenn ich keinen Denkfehler habe, ist ppr dadurch immer mindestens 1.
Brett = 0 wäre auf jeden Fall ein Problem, das einen Zugriff außerhalb des Array-Bereichs auslöst.
edit:
Zeile 567 (laut NoPaste):
Code: | IF Brett >= ppr THEN Brett = ppr |
Wenn zuvor noch nicht ausgelost wurde, ist ppr = 0 (wird ja erst während der Auslosung gesetzt), und damit kann auch Brett auf 0 gesetzt werden, was dann in der folgenden Auslosung zu einem Zugriffsfehler führt. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1235 Wohnort: Ruhrpott
|
Verfasst am: 27.08.2016, 09:33 Titel: |
|
|
nemored hat Folgendes geschrieben: | Wenn zuvor noch nicht ausgelost wurde, ist ppr = 0 (wird ja erst während der Auslosung gesetzt), und damit kann auch Brett auf 0 gesetzt werden, was dann in der folgenden Auslosung zu einem Zugriffsfehler führt. | Genau das meinte ich. Einen Rat zu geben, wie man das stilistisch sauber lösen kann (ohne Seiteneffekte), traue ich mich aber mangels ausreichenden Einblicks in das Gesamtprogramm nicht.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 27.08.2016, 11:24 Titel: |
|
|
Allein die Bezeichner... ELO(j), DWZ(j), BB, E, K, L, T, XXX, TAZ, RAZ, ppr, BV, ... und natürlich alles SHARED...
https://de.wikipedia.org/wiki/Sprechender_Name#Sprechende_Namen_in_der_Programmierung _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1235 Wohnort: Ruhrpott
|
Verfasst am: 27.08.2016, 13:57 Titel: |
|
|
Und ein paar GOTOs sind auch noch drin!
Ich vermute mal, die erste Version dieses Programms ist noch unter QB entstanden. Im Laufe der Zeit ist es dann immer mehr erweitert und zwischendurch nach FB portiert worden. Richtig?
Und mittlerweile hat es einen Umfang erreicht, bei dem der damals gängige Programmierstil anfängt, Probleme zu bereiten.
Aus den kryptischen Bezeichnern aussagekräftige zu machen ist mit Suchen & Ersetzen eine Sache von wenigen Minuten. Die globalen Variablen soweit wie möglich durch lokale zu ersetzen ist schon etwas schwieriger, aber auch nicht unmöglich. Das Programm wird dadurch auf jeden Fall wesentlich übersichtlicher und pflegeleichter.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 27.08.2016, 15:33 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Und ein paar GOTOs sind auch noch drin!
Ich vermute mal, die erste Version dieses Programms ist noch unter QB entstanden. Im Laufe der Zeit ist es dann immer mehr erweitert und zwischendurch nach FB portiert worden. Richtig?
Und mittlerweile hat es einen Umfang erreicht, bei dem der damals gängige Programmierstil anfängt, Probleme zu bereiten.
Aus den kryptischen Bezeichnern aussagekräftige zu machen ist mit Suchen & Ersetzen eine Sache von wenigen Minuten. Die globalen Variablen soweit wie möglich durch lokale zu ersetzen ist schon etwas schwieriger, aber auch nicht unmöglich. Das Programm wird dadurch auf jeden Fall wesentlich übersichtlicher und pflegeleichter.
Gruß
grindstone |
Ja, das Programm enstand damals in Qbasic. Irgendwann habe ich es für Freebasic "neu" geschrieben. Nun habe ich das Programm fast komplett erneut neu geschrieben. Lediglich die ein oder andere Sub wurde vom damaligen alten Quellcode übernommen. Deswegen sind da auch noch ein paar Goto's vorhanden! Die werde ich irgendwann schon noch rausschmeissen. Wusste gar nicht mehr, dass die noch drin sind! Das Problem mit der Speicherzugriffsverletzung ist ja, dass man an gewisse Dinge im ersten Moment gar nicht dran denkt! Zum Beispiel daran, dass man auch ab der Null oder gar im Minusbereich deklarieren soll/muss, eben weil dies vorkommen kann. Noch bin ich nicht dazugekommen, mich nochmals auf Fehlersuche zu begeben. Aber sobald ich etwas Zeit habe, werde ich das tun.
Was ich noch machen muss, ist die Realisierung der Abspeicherung von den Ergebnissen und der Paarungen. Da bin ich im Moment noch ein wenig am überlegen, wie ich das am besten mache. Aber das kriege ich auch noch hin. Die Krönung für dieses Programm wäre ja Auslosung im Schweizer System! Ich fürchte aber, dass ich daran scheitern werde...
Wobei das damalige Qbasic-Projekt eh nur auf Rundensystem ausgelegt war. Man konnte nur 16 Teilnehmer eingeben! Bei der ersten Freebasic Version waren es dann schon ein paar mehr. Leider halt immer ohne Punkteeingabe. Dies versuchte ich nun zu ändern! Mit Erfolg wie man sieht! Oder nicht?
Guß
ALWIM _________________ SHELL SHUTDOWN -s -t 05
Zuletzt bearbeitet von ALWIM am 27.08.2016, 17:05, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 27.08.2016, 16:56 Titel: |
|
|
Sebastian hat Folgendes geschrieben: | Den Hinweis von grindstone zum Umbenennen von Variablen find ich auf jeden Fall gut. Für Außenstehende (und auch für einen selber ein paar Monate oder Jahre später) ist ein Programm viel einfacher zu verstehen, wenn Variablen "obligoInHauswaehrung", "spielerNummer" oder "buttonPosition" heißen und nicht "abc", "xxx" oder "K". |
Das stimmt schon, aber bei DWZ und ELO muss ich eine Ausnahme machen, denn das sind die Abkürzungen bzw. Bezeichnungen für die Wertungszahlen beim Schach!
DWZ = Deutsche Wertungszahl
ELO = Internationale Wertungszahl
Jeder Schachspieler wird bei diesen Bezeichnungen sofort wissen, worum es geht! Darum habe ich auch DWZ und ELO genommen. Bei For - Next Schleifen wollte ich halt nicht unbedingt lange Variablennamen verwenden. Deswegen i, j und k.
Den Bildschirminhalt müsste ich doch speichern können oder? Sobald ich nämlich wieder auf Paarungen klicke, sind die alten Daten weg. Also es wird keine Paarung + Ergebnis mehr angezeigt. Muss ich mal schauen, ob sich das irgendwie vernünftig realisieren lässt.
Fröhliches programmieren allerseits!
Edit:
Habe den Fehler wahrscheinlich gefunden! Kein Zugriffsfehler bis jetzt!!!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4648 Wohnort: ~/
|
Verfasst am: 27.08.2016, 19:17 Titel: |
|
|
Als offizielle Abkürzungen sind DWZ und ELO durchaus sprechende Namen (DWZ sagt mir zwar nichts, aber ELO ist mir auch als Nicht-Schachspieler ein Begriff). Für Laufvariablen i, j und k zu verwenden ist ebenfalls in Ordnung; das wird sehr häufig so gemacht, und deshalb rechnet man bei diesen Variablen schon damit, dass es die Laufvariablen sein werden. Bei anderen Kurzbezeichnungen sieht das schon anders aus.
Allerdings würde ich dringend empfehlen, Laufvariablen nicht SHARED zu deklarieren! In FreeBASIC kannst du sie sogar direkt für eine FOR-Schleife deklarieren:
Code: | FOR i AS INTEGER = start TO ende
' ...
NEXT |
Eine globale Laufvariable macht spätestens dann Schwierigkeiten, wenn du in der Schleife ein Unterprogramm aufrufst, das dieselbe Variable verwendet. Und ich garantiere dir, dass du den Fehler dann nicht finden wirst.
Zitat: | Den Bildschirminhalt müsste ich doch speichern können oder? |
Ja, das kann man selbstverständlich; Stichwörter IMAGECREATE, GET und PUT (jeweils der Grafikbefehl). Wenn du aber die Anzeige nicht einfach nochmal neu generieren kannst, liegt da vermutlich noch irgendwo ein Problem. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 27.08.2016, 21:37 Titel: |
|
|
nemored hat Folgendes geschrieben: | Als offizielle Abkürzungen sind DWZ und ELO durchaus sprechende Namen (DWZ sagt mir zwar nichts, aber ELO ist mir auch als Nicht-Schachspieler ein Begriff). Für Laufvariablen i, j und k zu verwenden ist ebenfalls in Ordnung; das wird sehr häufig so gemacht, und deshalb rechnet man bei diesen Variablen schon damit, dass es die Laufvariablen sein werden. Bei anderen Kurzbezeichnungen sieht das schon anders aus.
Allerdings würde ich dringend empfehlen, Laufvariablen nicht SHARED zu deklarieren! In FreeBASIC kannst du sie sogar direkt für eine FOR-Schleife deklarieren:
Code: | FOR i AS INTEGER = start TO ende
' ...
NEXT |
Eine globale Laufvariable macht spätestens dann Schwierigkeiten, wenn du in der Schleife ein Unterprogramm aufrufst, das dieselbe Variable verwendet. Und ich garantiere dir, dass du den Fehler dann nicht finden wirst.
Zitat: | Den Bildschirminhalt müsste ich doch speichern können oder? |
Ja, das kann man selbstverständlich; Stichwörter IMAGECREATE, GET und PUT (jeweils der Grafikbefehl). Wenn du aber die Anzeige nicht einfach nochmal neu generieren kannst, liegt da vermutlich noch irgendwo ein Problem. |
Da muss ich mal schauen, wie ich das hinbekomme mit dem Bildschirm speichern. Das habe ich noch nicht in Angriff genommen. Programm funktioniert bis jetzt. Keine Zugriffsverletzungen mehr!
Übrigens: Da gabe es bei Wer wird Millionär vom Günther Jauch mal eine 500.000 Eurofrage zu der ELO-Zahl! (Wer oder was hat eine ELO-Zahl) Ich hätte das auf Anhieb gewusst!!! Für mich wäre das keine 500.000 Euro Frage gewesen.
Ich mache halt immer die Laufvariablen Shared.
Falls jemand Schweizer System realisieren möchte, darf dies gerne tun. Ich werde es wahrscheinlich nicht hinbringen. Das wäre schon etwas für mein Stop-Projekt!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1235 Wohnort: Ruhrpott
|
Verfasst am: 28.08.2016, 12:01 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Da muss ich mal schauen, wie ich das hinbekomme mit dem Bildschirm speichern. |
Ich bin mir zwar alles andere als sicher, ob das in diesem Fall die richtige Methode ist, aber den Bildschirminhalt als Grafik zu speichern ist relativ einfach: Code: | Dim Shared As Any Ptr bildpuffer
Sub BildschirmSpeichern
Dim As Integer breite, hoehe, farbtiefe, bpp
If bildpuffer = 0 Then
ScreenInfo breite, hoehe, farbtiefe, bpp
bildpuffer = ImageCreate(breite, hoehe,, bpp * 8) 'grafikpuffer erzeugen
Get (0, 0) - (breite - 1, hoehe - 1), bildpuffer 'bildschirminhalt in puffer schreiben
EndIf
End Sub
Sub BildschirmHolen
Dim As Integer breite, hoehe, farbtiefe, bpp
If bildpuffer Then
ScreenInfo breite, hoehe, farbtiefe, bpp
Put (0, 0),bildpuffer,(0, 0) - (breite - 1, hoehe - 1), PSet 'pufferinhalt auf bildschirm schreiben
ImageDestroy bildpuffer 'speicher freigeben
bildpuffer = 0 'pointer löschen
EndIf
End Sub |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 12.06.2017, 23:54 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Die Krönung für dieses Programm wäre ja Auslosung im Schweizer System! Ich fürchte aber, dass ich daran scheitern werde... |
Jetzt habe ich tatsächlich Schweizer System in meinem Programm drin! Ich bin nicht gescheitert!!! Habe nämlich eine Möglichkeit gefunden Schweizer System in mein Programm einzubauen. Wär hätte das gedacht?
Kleines Fazit zum Programm:
Programm funktioniert, Schweizer System ist drin, HTML Ausgabe ist drin, abspeichern funktioniert, Punkteeingabe ist drin, TRF-File Ausgabe ist drin!
Das Programm, wurde bei einem offiziellen Schachturnier im Einsatz getestet. Keine nennenswerte Abstürze oder größere Bugs gefunden. Funktioniert so, wie es sein soll! Lediglich ein paar Kleinigkeiten, die noch geändert gehören. Aber sonst, funktioniert das Ding im großen und ganzen!
Ein Problem habe ich allerdings doch noch:
Die Sonderbuchstaben ß, ä, ö, ü werden nicht korrekt angezeigt! Ich kann zwar mittels eines Befehles Code: | CharToOem Wort, Wort | was machen, aber das nur bedingt. Das hilft mir nicht so recht weiter. Wenn ich den Befehl verwende, habe ich an anderer Stelle wieder komische Zeichen auf dem Bildschirm sofern ich was mache (einlesen/abspeichern, ... ect.). Wenn jemand eine vernünftige Lösung kennt, bitte mitteilen! Ich brauche etwas, was immer funktioniert und die richtigen Buchstaben auf dem Bildschirm ausgibt und in eine Datei abspeichert!!!
Falls jemand Interesse hat, daran mitzuwirken, einfach melden?
Es fehlt noch Buchholz- bzw. Sonneborn-Bergerberechnung mit Ranglistenkorrektur; einlesen eines TRF-Files; Spieler in ausgewählter Runde aussetzen lassen; Rundendatum Eingabemöglichkeit; Übersetzung ins Französische/Spanische.
Wann ich das Ding allen zur Verfügung stelle, steht noch in den Sternen? Geplant ist eventuell, eine Anerkennung seitens der FIDE!!! Dies ist möglich, sofern alles im Programm drin ist, was die FIDE verlangt.
https://www.fide.com/FIDE/handbook/C04Annex4_VCL17.pdf
https://www.fide.com/FIDE/handbook/C04Annex3_FEP16.pdf
Dann programmiere ich mal weiter!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1235 Wohnort: Ruhrpott
|
Verfasst am: 13.06.2017, 12:15 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Wenn jemand eine vernünftige Lösung kennt, bitte mitteilen! | Ist doch ganz einfach. Statt Code: | CharToOem(Wort, Wort) | sowas wie Code: | CharToOem(OriginalWort, AusgabeWort) |
Dadurch bleibt der ursprüngliche Text erhalten, und AusgabeWort wird nur zur korrekten Bildschirmausgabe verwendet.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|