Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Vieleicht hat ja jemand eine gut Idee

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ernie



Anmeldungsdatum: 31.12.2004
Beiträge: 13

BeitragVerfasst am: 31.12.2004, 14:13    Titel: Vieleicht hat ja jemand eine gut Idee Antworten mit Zitat

Also, ich versuche mal mein problem zu beschreiben, selbst das ist schon
nicht ganz einfach.

Ich versuche ein kleines Qbasic Programm zu schreiben, welches aus riesigen Zahlenkolonnen ein lauffähiges CNC Programm erzeugt.
Jeder kennt sicher Mosaikbilder. Wenn ich so ein Mosaikbild Berechnen lasse, dann habe ich eine CSV Datei der Füllmatrix. In dieser Datei steht an welcher Stelle, welche Farbe der Stein haben muss.
Ungefähr so;
47,38,45,33,..................22,34
.
.
22,45,55,..................22,33,67 u.s.w.
Diese Matrix kann aber jedes mal eine andere Anzahl von Seinen haben.
Wenn ich z.b. ein Mosaik von 400 mal 400 erstellen will, dann sind das schon
160000 Steine. Jetzt soll mein kleiner selbstgebauter Roboter dieses Mosaik anhand der Matrix legen. Da mein kleiner Rob. aber nicht so gross ist, das er das ganze Mosaik legen kann, muss die Füllmatrix auf 30 mal 30 Steine aufgeteilt werden so das er immer 900 Steine zu einer Fliese zusammenlegt.
Vielleicht hat ja irgend jemand eine Idee wie ich diese Masse an Zahlen bewältigen kann. Wie kann man die riesige Füllmatrix einlesen und automatisch jeder Zahl eine Variable zuweisen, so das ich diese Matrix auf 30 mal 30 Steine aufteilen kann?


Dann gibt es da noch ein paar Probleme mit der Farbcodeabfrage, an welcher Stelle liegt liegt welcher Stein ?
Und ein Problem mit der Magazinierung der Steine habe ich auch noch, aber
zuerst muss erst mal das Problem mit der Riesigen Matrix gelöst werden.

Also, ich danke schon mal im Voraus und ich bin für alle Vorschläge dankbar.

Gruss Enrico
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 31.12.2004, 15:33    Titel: Antworten mit Zitat

Wie Du korrekt erkennt hast, ist das zu gross für ein zweidimensionales Array. Daher würde ich auf der Festplatte eine temporäre Direktzugriffsdatei (OPEN ... FOR BINARY AS) anlegen und mit SEEK arbeiten, d.h. Du bildest Dein Array als Datei ab.

Um das bei heutigen PCs grosszügig vorhandene RAM nutzen zu können, würde ich RAMDRIVE.SYS laden (MS-DOS 6.22; leider gibt es bei den neueren Windows-Versionen keinen gleichwertigen Ersatz dafür mehr) und in einer RAM-Disk diese Datei anlegen.

Der eine oder andere hier wird Dich wahrscheinlich auf eine EMS/XMS-Bibliothek verweisen; ich kann da nur auf CALL INTERRUPT(&H67, ...) verweisen. Siehe auch

http://www.ctyme.com/intr/rb-7432.htm
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ant



Anmeldungsdatum: 21.12.2004
Beiträge: 3

BeitragVerfasst am: 31.12.2004, 15:58    Titel: Antworten mit Zitat

Ich glaube, dass ist nicht das problem.
Du hast das Komplettmosaik ja schon in einer Datei abgelegt, richtig?
Du braucsht also nur noch die Mathematik um bestimmt bereiche aus dem Mosaik auszulesen.
Der einfachheit halber würd ich keine csv datei nehmen, sondern (vorrausgesetzt du hast nicht mehr als 256 verschiedene zustände) für jeden stein ein byte reservieren und dann den asciwert auf den wert setzen, den der steintyp hat.
Nun musst du bestimmte quadrate aus dem großen Mosaik rauslesen. Hier eine Anleitung wie ich das machen würde:
eine funktion xytoz(x,y) schreiben, die die kooardinaten in das byte umwandelt. Z.B.
(0,0) -> 1
(0,1) -> 2
formel wäre etwa dafür: (x+1)+y*steineprozeile
dann würde ich eine funktion schreiben, die dir quadrate aus der datei rausliest:
getquadratstein(stein,xstart,ystart)

etc.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ernie



Anmeldungsdatum: 31.12.2004
Beiträge: 13

BeitragVerfasst am: 31.12.2004, 17:31    Titel: Antworten mit Zitat

erst mal danke für die Antworten, ich werde die Varianten mal probieren.
Auf jeden fall habt Ihr mich auf eine richtig gut Idee gebracht.
Das Mosiakprogramm gibt mir nicht nur eine CSV Datei nach dem oben beschrieben Schema aus sondern es kann mir auch eine Textdatei mit der Füllinformation ausgeben, etwa so:
1,1,34
1,2,22
.
.
2,3,12
wobei die erste Zahl die Zeile, die 2. Zahl die Spalte und die 3. Zahl die Farbnummer darstellt. Das ich daran nicht gedacht habe.
damit müsste man doch mehr anfangen können als mit diese CSV Datei. Oder?
Allerdings ist so eine Textdatei wirklich ellen lang.
Vieleicht habt Ihr ja noch einen Vorschlag für eine Effizenze Formel wie ich diese grosse datei in 30 mal 30 zerhacken kann ?
das Problem ist, das die anzahl der Steine immer Variiert, das können mal 1000 mal 2000 Seine sein oder auch mal 200 mal 30.
Diese einzelnen Fliessen kann ich ja dann seperat, jede Fliese einzeln in eine Datei zur Späteren weiterverarbeitung auf Festplatte Speichern und Später einzeln aufrufen.

Vieleicht ist es ganz simpel, aber vor lauter grübeln und probieren hab ich jetzt ein wenig den überblick verloren.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz