![]() |
strings per filestream in datei speichern/laden
hi,
was ist an folgendem falsch?
Delphi-Quellcode:
procedure TServerBanList.Load(const FileName: string);
var FS: TFileStream; Buf: array[0..14+1] of Char; begin FS := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive); try while FS.Read(Buf, Length(Buf)) = Length(Buf) do if not IsBanned(Buf) then Ban(Buf); finally FS.Free; end; end; ... procedure TServerBanList.Save(const FileName: string); var FS: TFileStream; ServerBan: PServerBan; begin FS := TFileStream.Create(FileName, fmCreate or fmShareExclusive); try ServerBan := FServerFirstBan; while ServerBan <> nil do begin FS.Write(ServerBan^.IP, Length(ServerBan^.IP)+1); ServerBan := ServerBan^.Next; end; finally FS.Free; end; end; beim laden (ich speichere hier ips, das heisst ich brauche maximal 16byte pro ip) bekomme ich komische zeichen zurückgegeben, aber sicher nicht meine ips, ist dort irgendwo was verkehrt? (doofe frage - muss ja). ich möchte die ips einer verketteten liste speichern/laden können.... ich könnte auch ne stringliste verwenden, aber das möchte ich nicht mfg |
Re: strings per filestream in datei speichern/laden
Moin Mario,
wenn Du Strings speichern willst, musst Du den Index des ersten Zeichens angeben:
Delphi-Quellcode:
bzw., in Deinem Falle
fs.Read(buf[1],...);
Delphi-Quellcode:
da Du sonst die Adresse von Buf, und, ggf., das was dahintersteht speicherst/liest.
fs.Read(buf[0],...);
|
Re: strings per filestream in datei speichern/laden
hallo christian,
habs mal so geänder, bekomme aber immernoch das falsche angezeigt. könnte nochwas falsch sein? |
Re: strings per filestream in datei speichern/laden
Moin!
Gleiches gilt natürlich auch für's speichern (IP). Dann noch eine Frage: warum speicherst du das als String? Warum nicht einfach 4x 1 Byte? Vor allem hast du bei 4x1 Byte nicht das Problem zu überlegen ob es nun weniger als 16 Byte sind oder nicht - vor allem - wie kommst du auf 16 Byte? MfG Muetze1 |
Re: strings per filestream in datei speichern/laden
hallo mütze,
ich hab das beim spoeichern nun so:
Delphi-Quellcode:
nun bekomm ich aber immernoch nichts angezeigt wenn ich es wieder lade :(
procedure TServerBanList.Save(const FileName: string);
var FS: TFileStream; ServerBan: PServerBan; begin FS := TFileStream.Create(FileName, fmCreate or fmShareExclusive); try ServerBan := FServerFirstBan; while ServerBan <> nil do begin FS.Write(ServerBan^.IP[1], Length(ServerBan^.IP)); ServerBan := ServerBan^.Next; end; finally FS.Free; end; end; Zitat:
ich meine 16 byte, weil die ip selbst bis zu 15byte sein kann (z.b 255.255.255.255 = 15 zeichen) +1 byte für die laengenangabe des strings |
Re: strings per filestream in datei speichern/laden
Moin!
Zitat:
Zitat:
Zitat:
MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz