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:

Inhalt einen Feldes in ein anderes übernehmen ...
Gehe zu Seite 1, 2  Weiter
 
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
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 19.08.2014, 19:09    Titel: Inhalt einen Feldes in ein anderes übernehmen ... Antworten mit Zitat

... bringt mir einen Fehler ein.


Guten Abend Gemeinde!

Hab' in einem Rechenstrang einen for..next Anweisung und belege pro Durchgang Variablen mit dem jeweiligen Durchgangsergebnis. x(1),x(2),x(3) usw. Hab nix dim denn bis 10 gibts da Freigrenze.
Jetzt will diese Ergebnisse in ein anderes Feld übernehmen, also zB das Ergebnis x(2) in z(2). Jetzt meckert mich der Compiler an. Die Fehlermeldung ist mir nicht mehr präsent.

Was kann ich da tun?


grüsse Nils verwundert
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 19.08.2014, 20:11    Titel: Antworten mit Zitat

Wenn du DIM verwendest, funktioniert es dann? Ich würde inzwischen auf jeden Fall die explizierte Deklaration empfehlen (OPTION EXPLICIT), da sich sonst wesentlich leichter Fehler einschleichen können.

Eine Fehlermeldung wäre auf jeden Fall sehr hilfreich, sonst gibt es viele mögliche Ursachen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 20.08.2014, 09:13    Titel: Antworten mit Zitat

Hi nemored!

Dank für Deine Ausführungen!

Ich belege ein Feld sagen wir x(tra) in einer Schleife die von 2 bis 10 geht; zuvor belege ich cx(tra) von Hand mit (0) und (1). Das klappt auch ganz prima. Jetzt gehe ich in eine andere Schleife und will Teile des Inhalts von cx(..) in scx(..) übernehmen. Ich bestimme also: scx(1)=cx(1).Da bekomme ich den Fehler.

Ich könnte ja jede der Variablen dimensionieren, aber gerade das will ich mir ja ersparen. Zum Schluß soll die Schleife unzählige Male durchlaufen werden, wobei die Variablenwerte <alt> von den <neuen> überschrieben werden sollen.

Vllcht erklärt das genauer was ich meine!?

sonnigen gruß aus der kalten Hauptstadt

Nils cool
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 20.08.2014, 11:42    Titel: Antworten mit Zitat

Kannst du mal ein (weitgehend reduziertes) Programm posten, bei dem das Problem auftritt? Im Augenblick kann es noch an sehr vielem liegen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 21.08.2014, 19:49    Titel: Antworten mit Zitat

Hi nemore

Die sache hat sich soweit geklärt, als oich die Dim am falschen Ort vorgenommen habe.

Jetzt bleibt noch folgendes:

In meiner Schleife muß ich zigtausendmal hochzählen. Solche Felder kann ja QB nicht erzeugen.
Was macht man da? Redimm nach einer gewissen ANzahl. Oder ganz einfach nach zB 10 ausgeben und auf Null stelllen und weiter geht's.

Gib mir doch mal bitte einen Hinweis dazu.

grüsse Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 21.08.2014, 19:58    Titel: Antworten mit Zitat

Das kommt darauf an, was genau du vorhast. Wenn die alten Werten nicht mehr benötigt werden, kannst du mit einem Ringpuffer arbeiten, also z. B. nach Wert 10 wieder bei 1 anfangen. Ansonsten REDIM; aber auch hier ist zu überlegen, das in größeren Schritten zu machen - also z. B. immer wenn die Grenze erreicht ist, gleich um 10 nach oben setzen statt nur um 1. Das erspart ein REDIM bei jedem Durchlauf. Die aktuellen Grenzwerte musst du natürlich dabei im Auge behalten (Stichwort UBOUND).
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 22.08.2014, 18:09    Titel: Antworten mit Zitat

Hi nemored!

Sorry für meine Tippfehler bei letzten Mal. Mir schwamm alles vor Augen!

Deine Tipps: gut! Hab' ich mir so auch überlegt. Aber der Teufel steckt im Detail!

Frage: Wenn ich eine Dim Variable (10) von 2 bis 10 in einer Schleife hochzähle, warum in drei Teufels Namen hab' ich nach dem next bereits die 11? Das überrascht mich doch ein bisserl, gell!

Ich hab' das so hingekriegt, aber ganz bestimmt nicht schulmäßig!

Gibts denn für QB Routinen zB 'Tarpezverfahren' oder 'Simpsonverfahren' oder 'Runge-Kutta-Verfahren?'

Frage(nebenbei): Ich hab mal print #1, using Anweisungen in eine Variable (fo$[wie die hieß weiß ich noch. Das ist aber auch alles.!]) geschrieben und vor dem print #1, Befehl aufgerufen. Ist ziemlich praktisch, aber ich weiß nicht mehr wie das geht. Hast Du denn eine Idee?


Bin noch ne Stunde online und grüsse alle im Forum

Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 22.08.2014, 18:58    Titel: Antworten mit Zitat

Zitat:
Wenn ich eine Dim Variable (10) von 2 bis 10 in einer Schleife hochzähle, warum in drei Teufels Namen hab' ich nach dem next bereits die 11? Das überrascht mich doch ein bisserl, gell!

Die Schleife zählt um 1 (bzw. die Schrittweite) nach oben und prüft anschließend, ob der Wert noch innerhalb des Bereichs liegt. Ist übrigens nichts QB-spezifisches, sondern macht jeder BASIC-Dialekt so, mit dem ich mich bisher beschäftigt habe. Ist auch ganz praktisch, um nach der Schleife zu prüfen, ob sie komplett durchlaufen wurde.

Zu den anderen Fragen kann ich im Augenblick nichts sagen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 22.08.2014, 19:18    Titel: Antworten mit Zitat

Hi nemored!

BTW: Ob mich mal jemand aus dem Forum an die Hand nehmen kann und mich anleitet ein Oberfläche mit QB zu realisieren?
Ich hab keine Ahnung davon. Mein Ding ist das nämlich ganz und garnicht.

gruss und tschuss Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 22.08.2014, 23:03    Titel: Antworten mit Zitat

Hallo Nils!

Was genau meinst du mit "Oberfläche"?

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 25.08.2014, 09:13    Titel: Antworten mit Zitat

@ grindstone

Hi!
Gemeint sind damit geometrisch und ästhetisch angeordnete, sinnreiche Ein- und Ausgabeelemente. ZB Buttons, Rolläden, Anhakkästchen, Darstellungsfensterchen, Scrollfensterchen. Das sind alles Sachen, mit denen ich mich überhaupt noch nicht beschäftigt habe. Vllt weißt Du da gut Bescheid und willst mir helfen?! Wäre schön!

grüsse Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
RockTheSchock



Anmeldungsdatum: 04.04.2007
Beiträge: 138

BeitragVerfasst am: 25.08.2014, 09:56    Titel: Antworten mit Zitat

Musst du denn unbedingt QB verwenden? Dann gibt es z.B. folgende GUIs
http://qbasic.east-power-soft.de/index.php?menu=quickbasic_quickbasic_guis&nav=0

Das Problem dabei ist allerdings, dass du immer Probleme mit neuren Windows Versionen haben wirst bzw. auch in der DoxBOX läuft das ganze wahrscheinlich eher schlecht.

Wenn du FreeBasic verwendest hast du ganz andere Möglichkeiten. z.B.
FireFly(Glade), CGUI, Windows API, FBGUI
http://www.freebasic-portal.de/downloads/ides-fuer-freebasic/fireflyfbmp-260.html
http://cgui.sourceforge.net/screen_shots/menu.png
http://www.freebasic.net/forum/viewtopic.php?f=14&t=17058

Es kommt auch darauf an auf welchen System das Programm später laufen soll. Wenn es z.B. überall auf DOS,Windows,Linux laufen soll bietet sich CGUI an. Wenn es nur auf aktuellen Systemen laufen soll gehen auch andere.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 25.08.2014, 10:42    Titel: Antworten mit Zitat

@ RockTheShock:


Lieber wär's mir schon, denn das Teil bin ich gewohnt. Oder geht mit QB da garnichts?

grüsse Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
RockTheSchock



Anmeldungsdatum: 04.04.2007
Beiträge: 138

BeitragVerfasst am: 25.08.2014, 11:09    Titel: Antworten mit Zitat

Natürlich geht vieles mit QB, aber oft nur über viele Umwege, die dann alles verkomplizieren. Dazu gehören Themen wie Netzwerk, Datenbanken, 3D Grafik, Speicherintensive Anwendungen.

Ein einfaches Beispiel ist die Beschränkung auf 64KB bzw. 128KB. In FB kannst du Strings von bis zu 2GB Problemos verarbeiten. Auch große Arrays sind ohne Umwege leicht zu nutzen. In QB musst du den Umweg über XMS/EMS machen, wo aus 2 Zeilen FBcode, 100 Zeilen QBCode (mit Binärer ASM Routine werden).

Schau dir einfach mal diese Liste von Libs je nach Betriebssystem an:
http://sourceforge.net/projects/fbc/files/Binaries%20-%20DOS/Libraries/
http://sourceforge.net/projects/fbc/files/Binaries%20-%20Windows/Libraries/
Für Linux gibt es fast alle Bibiotheken in den DEV Paketen der jeweiligen Distribution. Statt diese manuell herunterzuladen, werden diese normalerweise über das Paketmanagment installiert.

Du siehst für DOS gibt es viele Libraries nicht einmal. DOS sollte wirklich nur noch in sehr speziellen Fällen verwendet werden.

Für FreeBasic gibt es sogar eine 64Bit Version dann kannst du mit null Aufwand den gesamten zur Verfügung stehenden Arbeitsspeicher auch > 4GB verwenden.

Viel wichtiger sind aber die Möglichkeiten externe Libraries mit relativ wenig Aufwand zu verwenden gerade im Datenbank und 3D Bereich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 191

BeitragVerfasst am: 25.08.2014, 18:43    Titel: Antworten mit Zitat

Hi RockTheShock:


Du gibst Dir ja redlich Mühe mich auf FB einzuschwören. Ach, da muß ich ja umlernen. Meine Bas-Programme laufen da nicht mehr. Ich sehe da Probleme über Probleme. Und die Programme umschreiben: Von den meisten weiß ich ja selbst nicht mehr wie die funktionieren. Eine Zeile an die falsche Stelle und alles ist Müll, den ich tagelang sortieren muß.

Gutes Rad, teures Rad!

Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 25.08.2014, 19:04    Titel: Antworten mit Zitat

@Nils:
Auch ich würde dir unbedingt zum Umstieg auf FB raten. Dessen Syntax ist so stark an die von QB angelehnt, daß du deine alten Quelltexte fast unverändert übernehmen kanst. Du müsstest dir nur jeweils einmal die Mühe machen, die Suffixe von den Variablen zu entfernen und sie stattdessen zu deklarieren (Edit: Die Variablen, nicht die Suffixe zwinkern ). Dafür bekommst du einen enormen Performancegewinn, eine ganze Reihe neuer Möglichkeiten und -wie RockTheSchock schon angemerkt hat- Zukunftssicherheit.

Und notfalls könntest du -wenn du mit dem Parameter '-qb' kompilierst- deine Quelltexte sogar 1:1 übernehmen. Aber das ist keine Dauerlösung.

@RockTheSchock:
Nur aus Interesse: Ist es in QB überhaupt möglich, die "windows.bi" einzubinden, so daß ich Zugriff auf die Win-API bekomme?

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 25.08.2014, 20:48    Titel: Antworten mit Zitat

Alte Programme anzupassen kann - wenn sie ejnen bestimmten Umfang erreicht haben - sehr hässlich werden; dann vielleicht doch eher neu schreiben. Aber wenn du ein neues Projekt beginnst, ist das wesentlich leichter; so übermäßig groß sind die Sprachunterschiede zwischen FB und QB gar nicht.

Ich habe zu anderem Zweck eine Zusammenstellung der Unterschiede erstellt; können auch gern andere mal drüberblicken, ob alles passt oder ob was fehlt.

http://users.freebasic-portal.de/nemored/Unterschiede_FB_QB.pdf
Bitte nicht über die "??" bei den Verweisen wundern. happy
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 25.08.2014, 21:10    Titel: Antworten mit Zitat

nemored hat Folgendes geschrieben:
Alte Programme anzupassen kann - wenn sie ejnen bestimmten Umfang erreicht haben - sehr hässlich werden
Das ist dank "Suchen und Ersetzen" auch kein wirkliches Hindernis, nur ein bisschen Fleißarbeit. Mein Tip dazu: erst die Variablen (mit passendem Typ) deklarieren, dann die Suffixe entfernen, sonst könnte es wirklich unübersichtlich werden.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 25.08.2014, 21:29    Titel: Antworten mit Zitat

Der Teufel liegt da im Detail. Sei es der Größenunterschied beim INTEGER oder die Wartezeit beim SLEEP; "schön" sind auch gleiche Variablennamen mit unterschiedlichem Suffix. Für mein erstes FreeBASIC-Programm fand ich jedenfalls das Neuschreiben wesentlich einfacher als das Umschreiben des bestehenden QBasic-Codes (etwas über 1000 Codezeilen)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 25.08.2014, 22:05    Titel: Antworten mit Zitat

Ich sehe, du bist auch umgestiegen. zwinkern

Sicher, ein paar Nickeligkeiten gibt es da schon. Aber die Vorteile im Hinblick auf Performance und neue Möglichkeiten sind so enorm, daß ich jedem nur uneingeschränkt zum Umstieg raten kann. lächeln

Und: Programme aus der Anfängerzeit sind meistens so chaotisch, daß sich ein Neuschreiben sowieso empfiehlt.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!


Zuletzt bearbeitet von grindstone am 26.08.2014, 01:25, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
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
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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