| Autor |
Nachricht |
unixman
Mitglied
Benutzerprofil
Anmeldungsdatum: 23.07.2001
Beiträge: 88
|
unixman Mitglied
00:53:00 26.12.2002 Titel: |
klassen versenden |
Zitieren |
hiho,
ich versuche allerhand informationen über sockets zu übertragen,
leider bin ich immer am Sendstring gescheitert - hab das nie richtig hinbekommen
mir kam nur die idee einfach klassen zu versenden, man kann sie ja un dateien schreiben... nur wie ich das über die borland-sockets machen soll is mir nen rätsel, aber ich komm um die nich drumrum, da ich das ganze management-zeuch der borland-sockets nich verlieren will... hat schon mal jemand sowas gemacht, bis für jeden tipp dankbar :)
gruss unixman |
|
|
|
 |
junix
Moderator
Benutzerprofil
Anmeldungsdatum: 31.10.2001
Beiträge: 7628
|
junix Moderator
01:06:00 26.12.2002 Titel: |
|
Zitieren |
Hmmm Klassen an sich lassen sich ja nicht einfach speichern.... es gibt mittel und wege ich vermute du verwendest die? Sieh dir auch SendStream & Co an... (Alles in der Hilfe zu finden)
-junix |
_________________ What do you think? Are you a coder or a programmer?
|
|
 |
unixman
Mitglied
Benutzerprofil
Anmeldungsdatum: 23.07.2001
Beiträge: 88
|
unixman Mitglied
01:20:00 26.12.2002 Titel: |
|
Zitieren |
send stream hab ich ne zum laufen bekommen...und wie soll ich die klassen ín den stream und wieder raus bekommen?
ein beispiel aus der borland hilfe:
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <stdio.h>
struct mystruct
{
int i;
char ch;
};
int main(void)
{
FILE *stream;
struct mystruct s;
if ((stream = fopen("TEST.$$$", "wb")) == NULL) /* Öffnet Datei TEST.$$$ */
{
fprintf(stderr, "Cannot open output file.\n");
return 1;
}
s.i = 0;
s.ch = 'A';
fwrite(&s, sizeof(s), 1, stream); /* write struct s to file */
fclose(stream); /* close file */
return 0;
} | |
die nehmen ne instanz ner strukur, laden die voll,
und schreiben die in ne datei,
das lesen geht dann mit fread man gibt an wie gross die struktur ist und zerrt die dann wieder raus
das geht auch mit klassen - muss gehen
da kenn ich was, ich kuck ma eben:
http://www.informit.de/books/c++21/data/start.htm
das is mit klassen
das muss doch auch über sockets gehen |
|
|
|
 |
junix
Moderator
Benutzerprofil
Anmeldungsdatum: 31.10.2001
Beiträge: 7628
|
junix Moderator
01:26:00 26.12.2002 Titel: |
|
Zitieren |
|
 |
unixman
Mitglied
Benutzerprofil
Anmeldungsdatum: 23.07.2001
Beiträge: 88
|
unixman Mitglied
04:49:00 26.12.2002 Titel: |
|
Zitieren |
das weiß ich selber
ich mag das ganze borland zeuch nur nich so richtig
alles was ich ja theoretisch tun muss: klasse nach char (*) casten -> char(*) nach String->Senden ->String nach char(*)->char (*) nach klasse casten - fertig
ich wollte ja nur wissen ob ja jemand schonmal erfahrungen gesammelt hat, oder jemand der Erfahrener ist als ich das ma für mich testen kann - damit ich keine 'dummheitsfehler' einbaue |
|
|
|
 |
unixman
Mitglied
Benutzerprofil
Anmeldungsdatum: 23.07.2001
Beiträge: 88
|
unixman Mitglied
05:24:00 26.12.2002 Titel: |
|
Zitieren |
also: hab das eben nochma probiert, bin aber wiedermal nich dahinter gekommen...
das mit den streams ist dann wohl die beste methode...
hab ebenn im forum gesucht - zu sendstream hab ich nix gefunden - is ja auch simpel - aber wie les ich den dann wieder aus? RecvdString->Stream->Klasse?? |
|
|
|
 |
junix
Moderator
Benutzerprofil
Anmeldungsdatum: 31.10.2001
Beiträge: 7628
|
junix Moderator
15:05:00 26.12.2002 Titel: |
|
Zitieren |
Den PDF-Artikel gelesen? Du unterliegts einem grundsätzlichenj Irrtum... SO können Klassen nicht versendet werden. Klassen können weitere Zeiger enthalten welche wieder wo ganz anders hinzeigen, die dann auf der neuen Maschine absolut nicht stimmen.
Die Selbe problematik existiert auch beim Speichern von Strukturen.
Ausserdem solltest du von der ganzen String-Theorie ebenfalls wegkommen. Du kannst binäre daten nicht nach Belieben nach String und wieder zurück konvertieren... Ein TStream ist genau dazu da binäre Daten zu verschieben. Belies dich
a) mal etwas zu TStream und deren Ableitungen
b) zum Thema Klassenspeichern (siehe den Artikel oben)
| Zitat: | | ich mag das ganze borland zeuch nur nich so richtig |
Das musst du mir erklären.... du arbeitet ja mit dem Builder oder mit Kylix oder?
-junix |
_________________ What do you think? Are you a coder or a programmer?
|
|
 |
unixman
Mitglied
Benutzerprofil
Anmeldungsdatum: 23.07.2001
Beiträge: 88
|
unixman Mitglied
00:59:00 27.12.2002 Titel: |
|
Zitieren |
also wegen dem borland-zeuch: ich versuch ansich so wenig wie möglich davon zu benutzen um den quellcode portabel und 'nativ' damit jeder, auch der der ncih weis was ein stream ist den code lesen kann...
Wegen den Zeigern in den Klassen:
die klassen stammen von mir und sind mehr oder weniger nur Container:| C++: | class CTest
{
public:
String eins, zwei;
int ieins, izwei;
} | |
...so in der art.... man könnte ja auch strukturen nehmen....
Wegen den strings. ich hab mal noch bissel im forum gesucht, da bin ich auf
die funktionen: 'ComponentToString' & 'StringToComponent' gestoßen, habs nur nich hingebracht die auf meine klasse(n) um zu rödeln...ich hab mir so gedacht wenn man komplexe Komponenten als string speichern kann muss das auch mit meinen klassen gehen...
oder sitze ich jetzt wieder einem irrtum auf?
[Edit]
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | String ClassToString(CTest *comp, int size)
{
AnsiString as;
TMemoryStream* pms = new TMemoryStream();
TStringStream* pss = new TStringStream(as);
try
{
pms->WriteBuffer(comp,size);
pms->Position = 0;
ObjectBinaryToText(pms, pss);
pss->Position = 0;
String temp=pss->DataString;
delete pms;
delete pss;
return temp;
} | |
hab das so versucht - bekommt immer eins mit der 'ungültiges-stream-format-keule'
[/edit]
[ Dieser Beitrag wurde am 27.12.2002 um 00:11 Uhr von unixman editiert. ] |
|
|
|
 |
junix
Moderator
Benutzerprofil
Anmeldungsdatum: 31.10.2001
Beiträge: 7628
|
junix Moderator
02:43:00 28.12.2002 Titel: |
|
Zitieren |
| Zitat: | Original erstellt von unixman:
oder sitze ich jetzt wieder einem irrtum auf? |
allerdings... Hast du denn den Link den ich angegeben habe mal angeschaut? Mag nicht das ganze nochmal erklären, wenns Marc++us ja bereits - zu mindest in der Entwurffassung - in seinem Buch verewigt hat.
-junix |
_________________ What do you think? Are you a coder or a programmer?
|
|
 |