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:

dateigröße und stringgröße

 
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
Feenfleisch



Anmeldungsdatum: 11.08.2005
Beiträge: 15

BeitragVerfasst am: 26.08.2005, 21:05    Titel: dateigröße und stringgröße Antworten mit Zitat

hallo,

ich möchte eine datei mit get auslesen. problem dabei: ich muss davor eine string variable mir einer bestimmten größe angeben. nun soll der string genau so gross sein, wie die verflickte datei. leider klappt dim a as string *lof (1) nicht. gibt es andere möglichkeit? danke für jede idee.

grüsse, erich
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 26.08.2005, 21:18    Titel: Antworten mit Zitat

Mach es doch so:
Code:

' Der Pfadname
datei$ = "c:\test.dat"

' Dateilänge ermitteln
f = freefile
open datei$ for binary as #f: length& = lof(f): close #f

' in BI-Datei schreiben
f = freefile
open "tmp.bi" for output as #f
print #f, "dim inhalt as string * " + str$(length&)
close #f

' und mit include wieder laden
$include 'tmp.bi'

' und löschen
kill "tmp.bi"

' und ursprüngliche Datei wieder laden
f = freefile
open datei$ for binary as #f
get #f, , inhalt
close #f


Das sollte eigentlich klappen. Der Trick ist, das die Variable erst während der Laufzeit durch eine externe
BI-Datei definiert wird.

Das sollte klappen, hab's aber nicht getestet.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 26.08.2005, 21:24    Titel: Antworten mit Zitat

Wird nicht funktionieren, $include ist ein Präprozessor-Befehl, der zur Laufzeit garnicht mehr existiert.

wozu muss der string eigentlich unbedingt mit DIM deklariert werden? durchgeknallt
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1875
Wohnort: D59192

BeitragVerfasst am: 26.08.2005, 21:28    Titel: Antworten mit Zitat

versuch mal
Code:
Dim As Integer ff, flen

ff = FreeFile
Open "c:/command.com" For Binary As #ff 'Hier den eigenen Dateiname einsetzen
flen = lof(ff)             'Länge der Datei ermitteln
Dim membuff As String
membuff = Space(flen)      'Speicherbereich anlegen
Get #ff, , membuff         'die ganze Datei in den Arbeitsspeicher laden
Close #ff
Print membuff
Print "verdisch..."
sleep

Gruß
Volta
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.


Zuletzt bearbeitet von volta am 26.08.2005, 21:32, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 26.08.2005, 21:30    Titel: Antworten mit Zitat

Dann halt so:
Code:

' Der Pfadname
datei$ = "c:\test.dat"

' Dateilänge ermitteln
f = freefile
open datei$ for binary as #f: length& = lof(f): close #f

' in BAS-Datei schreiben
f = freefile
open "tmp.bas" for output as #f
print #f, "datei$ = " + datei$
print #f, "dim inhalt as string * " + str$(length&)
print #f, "f = freefile"
print #f, "open datei$ for binary as #f"
print #f, "get #f, , inhalt"
print #f, "close #f"
[...]
close #f

' und dann starten
chain "tmp.bas"


Dann muss man noch das [...] durch seinen eigenen Code ersetzen, der noch folgen soll.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Feenfleisch



Anmeldungsdatum: 11.08.2005
Beiträge: 15

BeitragVerfasst am: 26.08.2005, 21:30    Titel: Antworten mit Zitat

weil ich mit get nur so viele zeichen lesen kann, wie der string gross ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Feenfleisch



Anmeldungsdatum: 11.08.2005
Beiträge: 15

BeitragVerfasst am: 26.08.2005, 21:45    Titel: Antworten mit Zitat

ich hab mir gerade etwas selber ausgedacht:

open datei$ for binary as #1
platzhalter=lof(1)
dateiinhalt = space(platzhalter)
get #1,,dateiinhalt
close #1
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 26.08.2005, 21:47    Titel: Antworten mit Zitat

Aber das hat volta doch schon vorgeschlagen verwundert

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1875
Wohnort: D59192

BeitragVerfasst am: 26.08.2005, 21:55    Titel: Antworten mit Zitat

nicht ganz so @jb,
in meinem Vorschlag war "dateiinhalt" ein String grinsen
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 26.08.2005, 21:59    Titel: Antworten mit Zitat

Aber wie kann man denn einem Zahlentyp space() zuordnen?!

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1875
Wohnort: D59192

BeitragVerfasst am: 26.08.2005, 22:02    Titel: Antworten mit Zitat

nee, geht nicht

ich sag ja
Zitat:
in meinem Vorschlag war "dateiinhalt" ein String grinsen

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

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

Dann dürfte sein Code aber nicht funktionieren, oder ? verwundert

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1875
Wohnort: D59192

BeitragVerfasst am: 26.08.2005, 22:09    Titel: Antworten mit Zitat

nur wenn er vorher "dateiinhalt" als String dimensioniert hat.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Feenfleisch



Anmeldungsdatum: 11.08.2005
Beiträge: 15

BeitragVerfasst am: 26.08.2005, 22:13    Titel: Antworten mit Zitat

dateiinhalt ist string, eben so dateiname.
es klappt auch, danke für eure hilfe. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 26.08.2005, 22:21    Titel: Antworten mit Zitat

@volta: Ach so, dann ist ja gut grinsen

@Feenfleisch: Freut mich, dass es jetzt klappt lächeln

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht 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