Moin!
Zitat von
Pseudemys Nelsoni:
hallo mütze,
ich hab das beim spoeichern nun so:
Delphi-Quellcode:
procedure TServerBanList.Save(const FileName: string);
begin
... sieht so ok aus wie dargestellt ...
end;
nun bekomm ich aber immernoch nichts angezeigt wenn ich es wieder lade
Hast du das Laden auch abgeändert? Also Stringlänge vorher gesetzt und beim Laden [1] angegeben? Woher weisst du wieviele Zeichen du laden musst? Schon alleine eine
IP Folge von 123.123.123.3 23.123.123.123 kann beim lesen einmal wie ebend geschrieben ausgelesen werden, genauso aber auch als 123.123.123.32 und 3.123.123.123 und daher ist die Frage der Länge wichtig. Daneben ist das mit 4x 1 Byte sicher.
Zitat von
Pseudemys Nelsoni:
Zitat von
Muetze1:
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?
wenn ich es nicht als string speicher sondern in 4 byte aufteile, muss ich das ganze ja noch parsen, macht das das ganze nicht langsamer?
Warum verwaltest du es als String? Ein TCustomWinSocket hält die
IP Adressen auch ordentlich wie bei den Socket bereit als 4 einzelne Bytes (Addr und RemoteAddr, Type TSocketAddrIn) und diese Klasse nutzen TServerSocket und TClientSocket. Daher ist es eine Frage der Verarbeitung - wenn du dir einen String nimmst und mit dem arbeitest, dann hast du dies Problem, ja. Wenn du dir die "richtigen" "rohen" unverarbeiteten Daten holst, dann hast du kein Problem, vor allem ist es einfach aus 4x 1 Byte eine
IP Adresse in der Form von aaa.bbb.ccc.ddd zu bekommen mit IntToStr() (User readable).
Zitat von
Pseudemys Nelsoni:
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
Ok, mit dem Längenbyte sollten sich die Bedenken die ich zuvor noch geäussert hatte erledigt haben...
MfG
Muetze1