AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Beste Speicherart ?

Ein Thema von PierreB · begonnen am 28. Jan 2005 · letzter Beitrag vom 28. Jan 2005
Antwort Antwort
Seite 3 von 3     123   
DelphiFreund

Registriert seit: 29. Jul 2004
Ort: München
127 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: Beste Speicherart ?

  Alt 28. Jan 2005, 17:03
Jens hat schon ein Beispiel gegeben, aber hier ein Einfaches zum verstehen:

Delphi-Quellcode:
procedure WriteSave(SavePath, PlayerName: String; LevelStatus: Byte; Money: Integer);
var
  Stream: TFileStream;
begin
  Stream:= TFileStream.Create(SavePath, fmCreate);
  Stream.WriteBuffer(PlayerName, SizeOf(PlayerName));
  Stream.WriteBuffer(LevelStatus, 1));
  Stream.WriteBuffer(Money, 4));
  Stream.Free;
end;
Das ist nur ein einfaches Beispiel, wenn beispielsweise eine Variable Länge des Namens, müsste beispielsweise ein Header geschrieben werden. Ich habe das ohne Delphi geschrieben, da ich es nicht installiert habe, deshalb könnte ein Fehler drinn sein.
Sandro
Irren ist menschlich...
  Mit Zitat antworten Zitat
Elite
(Gast)

n/a Beiträge
 
#22

Re: Beste Speicherart ?

  Alt 28. Jan 2005, 17:03
Ich kann dir nur dieses Tutorial ans Herz legen. Damit hast du blitzschnell begriffen, wie du Streams für deine Anwendungen benutzen kannst und das beste ist: Alles ist wesentlich einfacher als du dir momentan vorstellst. In Wahrheit kann man nämlich schon mit 2 Zeilen einfachem Code solch einen ominösen Stream erzeugen und darin einen Integer o.Ä. speichern.
Schnuper mal rein!
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#23

Re: Beste Speicherart ?

  Alt 28. Jan 2005, 17:31
Hallo,
dann darf natürlich auch die dpcollection.pas nicht fehlen. Damit könnt Ihr n-dimensionale Datenstrukturen speichern. Das coole ist, dass Bitmaps, Stringlisten, Strings, Integer, Float's usw einfach so gespeichert werden. Ohne weiteres zutun Eurer seits.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
MiniKeks
(Gast)

n/a Beiträge
 
#24

Re: Beste Speicherart ?

  Alt 28. Jan 2005, 17:32
Machs wie ich mit einer einfachen Blowfish verschlüsselung (128). Das geht Blitzschnell und ist sicher. Den Public Key bauste einfach in die exe ein. Wenn du willst helfe ich dir dabei!

Meld dich einfach!

mfg MiniKeks,
Nieberle Software Solutions Admin
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#25

Re: Beste Speicherart ?

  Alt 28. Jan 2005, 18:27
Für kurze Strings würd ich mit der Registry arbeiten. Wobei du da aufpassen musst, dass du alles in HKEY_Current_User schreibst, weil du sonst nicht ohne Adminrechte drauf zugreifen kannst
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#26

Re: Beste Speicherart ?

  Alt 28. Jan 2005, 18:30
Zitat von malo:
Für kurze Strings würd ich mit der Registry arbeiten. Wobei du da aufpassen musst, dass du alles in HKEY_Current_User schreibst, weil du sonst nicht ohne Adminrechte drauf zugreifen kannst
Bitte nicht - auf gar keinen Fall die Registry verwenden um anwendungspezifische Daten zu speichern. Da steht schon genug "Müll" drin.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#27

Re: Beste Speicherart ?

  Alt 28. Jan 2005, 18:31
Zitat:
So, mit Textfiles das Speichern hab ich jetzt soweit.
Funktioniert ganz gut soweit.
Dann verschlüssel es doch einfach mit XOR

Ich glaub bei Delphi-Source.de gibt es en Quellcode um dateien zu verschlüsseln
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#28

Re: Beste Speicherart ?

  Alt 28. Jan 2005, 18:58
es geht so:

Delphi-Quellcode:
FS{tfilestream} := TFileStream.Create(FileName{string, name unter welchem die datei geschbeichert werden soll}, fmCreate);

    //Text(string) speichern
    Buffer{string} := "text";
    FS.Write(Buffer[1], SizeOf(Buffer));

    //Zahl(integer) speichern
    //Tipp: ein integer verbraucht 4 bytes speicherplatz, wird also auf diese weise mit lediglich 4 byte speicherverbrauch gespeichert und ist mit notepad&co nicht darstellbar, schon das sürfte solche total-noobs abschrecken ;)
    BufferI{Integer} := 123;
    FS.Write(BufferI, SizeOf(Integer));

//text der variabel lang ist kann z.b. so gespeichert werde:
    Buffer := "Hallo. Dies ist ein Text, er kann beliebig lang sein.";
    {er kann natürlich net beliebig lang sein, nur 4 gigabyte groß!! ansonsten muss unten statt Integer Int64 verwendet werden, dann braucht das ganze ding mehr speicherplatz! und delphi hat glaubich auch ne maximallänge für strings oder?}
    BufferSize{Integer, wenn Buffer>4gb dann Int64} := Length(Buffer);
    FS.Write(BufferSize, SizeOf(Integer{/Int64}));
    FS.Write(Buffer[1], BufferSize);
//hier werden also zuerst in 4 bytes die länge des strings gespeichert und dann kann er spöäter nach bedarf ausgelesen werden.
//Diese methode braucht keinen Terminator und ich finds besser weil man _alle_ buchstaben speichern kann und nicht einen escapestring oder so hat.

//datei schließen
FS.Free;


////datei lesen
  FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);

{buffer: struing}
{buffersize: integer}

//in der datei "rumspulen" - geht auch beim schreiben;)
FS.Seek(0, soFromBeginning); //an anfang der datei
FS.Seek(0, soFromEnd); //ans ende der datei
FS.Seek(8, soFromCurrent); //8 buchstaben weiter
FS.Seek(-3, soFromEnd); //3 buchstaben vorm ende
FS.Seek(-12, soFromCurrent); //12 buchsteben zurück

//string lesen
SetLength(Buffer, 5{wie lang ist der string?});
FS.Read(Buffer[1], 5{wie lang ist der string?});

//integer lesen
FS.Read(BufferI, SizeOf(Integer));

//lies die konstrkution von vorher wieder aus, also zuerst 4 bytes längenindikator, dann den string selber
    FS.Read(BufferSize{<-so lang ist der string}, SizeOf(Integer));
    SetLength(Buffer, BufferSize); //buffer mit #0's füllen
    FS.Read(Buffer[1], BufferSize); //buffer auslesen
//wenn man vorher In64 genommen hat muss man hier natürlich auch Int64 einsetzen!

fs.free;

//wenn man z.b. inner datei unbekannt viele integers speichert kann mans ja so machen alle auszulesen:
while FS.Position < FS.Size do
  FS.Read(BufferI, SizeOf(Integer));
  //mach was mit bufferI
end;
Also: wenn man 5 buchstaben liest oder schreibt(.Write/.Read) dann spults in der datei automatisch 5 buchstaben weiter, man braucht nicht immer mit .Seek rumspulen.

Tipp: dauerndes rumspulen mahcts programm langsam!!

Tipp2: nemht den TMemoryStream statt den Filestream(ist genau gleich, nur dass kein dateiname angegeben werden muss)->bedienung genau gleich aber alles wird statt inner datei nur im RAM gespeichert.
Es gibt ja auch noch den TZipStream(oder so ähnlich) der speichert alles glaub wie der memory stream im ram bloß er verpackts gleich mit ZIP
-Dominik
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz