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:

Frage zum kopieren von dateien in den arbeitsspeicher+...

 
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
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 02.08.2005, 20:48    Titel: Frage zum kopieren von dateien in den arbeitsspeicher+... Antworten mit Zitat

Hallo.
Ich habe von Volta ein Prog bekommen, mit dem man dateien in den Arbeitsspeicher kopieren kann. Damit habe ich jetzt eine datei eingelesen und mit xor verschlüsselt. Bei bmp dateien kommt oft CHR$(0) vor. Wenn ich die anschließend in der datei printe, sind diese nicht da, da es ja auch kein zeichen ist. In der vorigen datei steht es aber. So fehlt immer ein teil der datei. Gibt es einen ersatz für print, z.B. put?? Wenn ja: wie geht das mit put??

Mfg
Michael
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 02.08.2005, 21:01    Titel: Antworten mit Zitat

Hallo.

Code:
Dim MeineVariable As String
Dim Laenge As Byte
Dim EineZahl As Long

MeineVariable = "Lalala"
Laenge=LEN(MeineVariable)
EineZahl = 543210

Open "BLA.DAT" FOR BINARY ACCESS WRITE AS #1
PUT #1,,Laenge
PUT #1,,MeineVariable
PUT #1,,EineZahl
CLOSE #1

'Nun neu einlesen
OPEN "BLA.DAT" FOR BINARY ACCESS READ AS #1
GET #1,, Laenge
MeineVariable=SPACE$(Laenge)
GET #1,, MeineVariable
GET #1,,EineZahl
CLOSE #1

bzw.
Code:
OPEN "Datei.dat" FOR BINARY ACCESS WRITE AS #1
lol$ = CHR$(0)+"LOL"+CHR$(0)
PUT #1,,lol$
CLOSE #1


Achtung: Ältere FreeBasic Versionen können nicht richtig mit CHR$(0) umgehen! Daher unbedingt die aktuellste Version, also 0.14 Stable verwenden!

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
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: 02.08.2005, 21:01    Titel: Antworten mit Zitat

wenn du die Datei mit dem 2.Beispiel ausgelesen hast geht:
Code:
ff = FreeFile
Open "deine Datei" For Binary As #ff
Put #ff, 1, membuff()
Close #ff

Behälst du den alte Namen "deine Datei" wird überschrieben, sonst neuer Name - neue Datei.
_________________
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
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 02.08.2005, 21:13    Titel: Antworten mit Zitat

Ups. Hab ja den Prog-code vergessen.

Ich meinte das anders. Hab mich vielleicht falsch ausgedrückt:

Code:

screen 18

Dim x as ubyte Ptr
Dim i As Integer, ff As Integer, flen As Integer, b As Integer, balt as integer
Dim text As String


Locate 2,41: INPUT "Datei eingeben:";pfad$

ff = FreeFile
Open pfad$ For Binary As #ff
flen = lof(ff)               
if flen < 1 then PRINT "Sie haben einen ungültigen dateinamen eingegeben.": sleep 10000: end

Dim membuff(flen-1) As UByte 
Get #ff, 1, membuff()         
Close #ff
kill pfad$
text=""
x=@membuff(0)

open pfad$ for binary as #1


balt=5
For i = 0 To flen-1         
    b=x[i]               
    n=b xor balt
    balt=b
    print #1,CHR$(n);
Next i
close #1

Hab den ursprungscode was verändert. Wollte das in nem prog von mir einbauen.
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1875
Wohnort: D59192

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

Code:
.
.
.
Dim membuff(flen-1) As UByte 
Get #ff, 1, membuff()         

x=@membuff(0)
balt=5
For i = 0 To flen-1         
    b=x[i]               
    x[i]=b xor balt
    balt=b
Next i

Put #ff, 1, membuff()
Close #ff

Print "Verdisch..."
sleep

EDIT:
n habe ich gestrichen, war auch nicht Dimensioniert!
2.Edit
nochmal etwas einfacher.
_________________
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 02.08.2005, 21:48, insgesamt 3-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 02.08.2005, 21:25    Titel: Antworten mit Zitat

Danke. Ich wusste nicht das das so einfach ist.

Mfg
Michael
_________________
Code:
#include "signatur.bi"
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 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