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:

Strings und Speicherverwaltung

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


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 12.07.2006, 00:04    Titel: Strings und Speicherverwaltung Antworten mit Zitat

Könnte bitte ein Mod diesen Teil des Threads abschneiden und meinen Post hier anschließend löschen? zwinkern
(Edit dreael: Teilung erfolgt.)
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 12.07.2006, 09:11    Titel: Re: bug or feature? Antworten mit Zitat

infinity hat Folgendes geschrieben:
Naja - in der Onlinehilfe ist Programmierbeispiel, das genauso aussieht, nur eben mit double statt string.

Setzt bitte Links, damit ersparst du uns das raussuchen und Rätselratten, was du genau meinst.

infinity hat Folgendes geschrieben:
Ich hatte gehofft, dass es dafür ein Patch oder ein geniales Workaround gibt.

Hmm. Danke jedenfalls erstmal fürs mitraten.

Hast du die Deklaration mit ZString statt String versucht?
Genau so eine Verwechslung kann sowas zur folge haben.
Der String von Freebasic entspricht nicht dem String von C / C++ etc.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
infinity



Anmeldungsdatum: 11.07.2006
Beiträge: 5

BeitragVerfasst am: 12.07.2006, 22:49    Titel: Re: bug or feature? Antworten mit Zitat

Michael Frey hat Folgendes geschrieben:

Setzt bitte Links, damit ersparst du uns das raussuchen und Rätselratten, was du genau meinst.


Geht am einfachsten wenn man mit F1 die Online-Hilfe startet und dann im Verzeichnis "..." auswählt.
Von mir aus auch der Link, aber der bringt ned viel:
mk:@MSITStore:<Installpath>\ide\fb-manual.chm::/KeyPgDots.html


Michael Frey hat Folgendes geschrieben:

Hast du die Deklaration mit ZString statt String versucht?
Genau so eine Verwechslung kann sowas zur folge haben.
Der String von Freebasic entspricht nicht dem String von C / C++ etc.


Bisher nicht. Ich hab deinen Vorschlag nun aber probiert und musste feststellen, dass ZString in diesem Zusammenhang kein zulässiger Datentyp ist.

Ich glaub ich beweg mich jetzt doch besser Richtung Bug-Report. Danke nochmals.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 12.07.2006, 23:02    Titel: Antworten mit Zitat

normalerweise sollte es gehen wenn du den string mit fester länge definierst, sprich
dim varname as string*1024 'für 1024 zeichen maximal
und die funktion dann mit
funktion(strptr(varname))
aufrufst, das sollte eigentlich funktionieren. Wichtig ist nur a) die feste länge und b) das strptr.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
infinity



Anmeldungsdatum: 11.07.2006
Beiträge: 5

BeitragVerfasst am: 13.07.2006, 00:57    Titel: Antworten mit Zitat

MisterD hat Folgendes geschrieben:
normalerweise sollte es gehen wenn du den string mit fester länge definierst, sprich
dim varname as string*1024 'für 1024 zeichen maximal
und die funktion dann mit
funktion(strptr(varname))
aufrufst, das sollte eigentlich funktionieren. Wichtig ist nur a) die feste länge und b) das strptr.


Hilft leider auch nicht. Da bei VA_ARG der Datentyp im Klartext steht - sprich nicht vorher per DIM definiert werden kann - ist es wahrscheinlich sowieso zwecklos, weils dann zwar mit fixer Länge übergeben wird, aber dann erst recht wieder mit dynamischer Länge ausgelesen.

Aber ich habs mittlerweile bei SF als Compiler-Bug eingereicht. Andre Victor muss es ja wissen zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 13.07.2006, 02:48    Titel: Antworten mit Zitat

du verstehst das falsch. Strings wie FB sie benutzt gibt es eigentlich nicht, das is n komisches gemurkse. Und wenn du dem ding nen string übergibst dann gibst du ihm wahrscheinlich nur die position des ersten zeichens und der string hört dann da auf, wo ein sogenanntes 0-byte, ein byte mit dem wert 0 eben ist. und genauso schreibt dieses teil dir den string auch wieder in den speicher. Problem dabei ist, dass der speicher eben nicht reserviert ist und das teil somit in ungültige bereiche schreibt. Also machst du feste länge - so lang wie der string maximal werden kann - dann ist der speicher reserviert und das ganze sollte funktionieren.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 13.07.2006, 03:34    Titel: Antworten mit Zitat

Wieso so kompliziert?
Einfach strptr() benutzen. So kann man den Datentyp String behalten, und trotzdem ist das für c/c++ ein normaler string.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 13.07.2006, 10:02    Titel: Antworten mit Zitat

infinity hat Folgendes geschrieben:
Aber ich habs mittlerweile bei SF als Compiler-Bug eingereicht. Andre Victor muss es ja wissen zwinkern

Setzt doch endlich mal Links wenn du solche Hinweisse machst ...
Wenn der Text dort ähnlich wie der hier ist, hat v1ctor wird deine Bugmeldung woll schon entsorgt.
Kein Code, kein Support.

(schlechtes Englisch ist aber kein Problem, hab ich selbst ausprobiert zwinkern)

Zitat:
Geht am einfachsten wenn man mit F1 die Online-Hilfe startet und dann im Verzeichnis "..." auswählt.
Von mir aus auch der Link, aber der bringt ned viel:
mk:@MSITStore:<Installpath>\ide\fb-manual.chm::/KeyPgDots.html

peinlich ...
Link
Nur weil du mit einer Angabe nicht weiter kommst, must du nicht auf andere schliessen ...

Und Poste endlich mal den ganzen Quellcode, ich hasse dieses Rätsel raten ... mit dem Fragment kann kein Mensch etwas Anfangen:
Code:
function menu cdecl (menucount as integer, ...) as string

Ich weiss da nur, die Verwendung von String ... ach was solls.
Ab sofort:
Ich ignoriere dein Beiträge und vorallem diesen Thread, bis ich den Gesamten Quellcode sehe. (Genau der Quellcode der zum Absturz führt)
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 13.07.2006, 11:41    Titel: Antworten mit Zitat

programmierer hat Folgendes geschrieben:
Wieso so kompliziert?
Einfach strptr() benutzen. So kann man den Datentyp String behalten, und trotzdem ist das für c/c++ ein normaler string.

Rate mal, wieso
dim empfangen as string
recv(verbindung, strptr(empfangen), 1024)
nicht funktionieren wird.. die recv funktion schreibt an die anfangsposition von empfangen, da empfangen aber kein string fester länge ist wurde kein speicher reserviert, der wird nur reserviert wenn du den string über die freebasic-internen routinen erstellst, das is eben das problem mit FB-Strings, dass man denkt, dass das so einfach ist, Recv aber schreibt einfach bis zu 1kb daten dann an die position - speicher nicht reserviert - absturz. so einfach ;p deswegen brauchst du nicht einfach nur strptr sondern auch noch fixed lenght.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 13.07.2006, 12:54    Titel: Antworten mit Zitat

[Mode:OT=ON]
Was is'n hier passiert?
[Mode:OT=OFF]
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 13.07.2006, 14:05    Titel: Antworten mit Zitat

@MisterD: ah, ja, stimmt, ok grinsen

@Mao: Das is ein Teil des Threads aus dem freebasic.de bug report, ich denke, so ist das übersichtlicher, und desswegen wurd das gemacht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
infinity



Anmeldungsdatum: 11.07.2006
Beiträge: 5

BeitragVerfasst am: 13.07.2006, 18:17    Titel: Antworten mit Zitat

Michael Frey hat Folgendes geschrieben:
Nur weil du mit einer Angabe nicht weiter kommst, must du nicht auf andere schliessen ...

Die Aussage kam eher daher, weil ein Filelink auf meine Festplatte niemandem etwas bringt, aber ich davon ausging, dass jeder Leser die Online-Hilfe auf seiner eigenen Platte hat, wenn er IDE laufen hat.

Zitat:
Und Poste endlich mal den ganzen Quellcode, ich hasse dieses Rätsel raten ... mit dem Fragment kann kein Mensch etwas Anfangen:

Wollte ich deswegen nicht, weil ich vorerst nur in Erfahrung bringen wollte, ob hier jemand diese Funktion schon mal aktiv verwendet hat. Ich war nicht auf der Suche nach Support für Syntax/Quellcodeanalyse.

Ist aber egal, weil mittlerweile: solved.
Compiler-Bug 0.15, mit 0.16 sollte es laufen. Ich hatte nicht bemerkt, dass der eigentliche Auslöser das input$() war. Hier muss ich mir wohl nachsagen lassen, dass ich nicht die aktuellste Compilerversion verwendet habe, es würde aber helfen, wenn auf freebasic.de unter "aktuelles Komplettpaket" auch die aktuelle Version zu finden wäre. Derzeit ist dort aber eine 0.15 als "aktuell":
http://www.freebasic.de/FBdownloads.php?zeig=downloads&in1=&in2=Compiler

@Mecki:
kannsu mal zumindest den Text auf "ist alte Version, neuester Compiler extra zu installieren" ändern oder eventuell sogar ein neues Paket einspielen? *liebschau*

Und nochmal sorry wegen OT-posting.[/url]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 14.07.2006, 10:06    Titel: Antworten mit Zitat

infinity hat Folgendes geschrieben:
Ich hatte nicht bemerkt, dass der eigentliche Auslöser das input$() war.

Wenn man keine Ahnung hat...
Genau das meinte ich mit
Zitat:
Und Poste endlich mal den ganzen Quellcode, ich hasse dieses Rätsel raten ... mit dem Fragment kann kein Mensch etwas Anfangen:

schimpfen

infinity hat Folgendes geschrieben:
Wollte ich deswegen nicht, weil ich vorerst nur in Erfahrung bringen wollte, ob hier jemand diese Funktion schon mal aktiv verwendet hat. Ich war nicht auf der Suche nach Support für Syntax/Quellcodeanalyse.

infinity hat Folgendes geschrieben:
Immer, wenn ich das
Code:
function menu cdecl (menucount as integer, ...) as string

mache bekomme ich bei Compile+Run einen Dr.Watson.

Ist i386 W32/SP2, Funktionsparameter sind bis auf die eine integer alles (2x in + out) strings. Wenn ich die selbe Funktion probehalber mit double anstatt string laufen lasse, funktionierts fehlerfrei.

Help?

tom[/code]

oder besser
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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