StringStream bzw MemoryStream auf anderer Form auslesen!
-
Hallo Leute:
mein Problem, ich erstelle in einer Form eim MemoryStream:
void __fastcall TForm1::Button1Click(TObject *Sender) { TMemoryStream *pms = new TMemoryStream; Memo1->Lines->SaveToStream(pms); delete pms; Form2->Show(); }
und in Form 2 will ich die Strings da raus lesen:
void __fastcall TForm2::Button1Click(TObject *Sender) { TMemoryStream *pms = new TMemoryStream; pms->Position=0; RichEdit1->Lines->LoadFromStream(pms); delete pms; }
LEider bleibt RichEdit leer, warum?
Beide h sind inkludiert, Fehler bringt er nich!
Was muss ich machen?
Bzw, gibt es auch eine möglichkeit das mit StringStream zu machen?
-
Du erstellst innerhalb jeder Button-Routine je 1 Memorystream. Die haben absolut nichts miteinander zu tun.
Müsstest 1 Memorystream im Header definieren und auf diesen dann von beiden Button-Routinen aus zugreifen. new und delete brauchst du aber immer noch. Nur solltest du (noch!) nichts löschen, solange du noch drauf zugreifen willst.
-
Hab jetzt im Header der Unit1. folgendes hinzugefügt!
public: // Anwender-Deklarationen TMemoryStream *pms; __fastcall TForm1(TComponent* Owner);
funktioniert noch nicht!
-
Nö, warum auch? Wenn das alles war, was du gemacht hast, erstellst du immer noch in jeder Button-Routine je 1 neuen Memorystream.
Und irgendwo (wo es ausgeführt wird, bevor du auf den Button klicken kannst - welchen auch immer) musst du danach noch "Form1->pms = new TMemoryStream();" und woanders "delete Form1->pms" machen...
-
hab jetzt deine beschreibung leider nicht verstanden...kannst das mal etwas genauer erklären bitte
-
*seufz*
//Form1Show: pms = new TMemoryStream(); //Form1Close delete pms; //Form1 Button1Click: Memo1->Lines->SaveToStream(pms); Form2->Show(); //Form2 Button1Click: Form1->pms->Position = 0; RichEdit1->Lines->LoadFromStream(Form1->pms);
-
Sorry,und danke trotzdem, teste das morgen mal aus, wenn ich wieder am projekt bin!
-
danke, das funktioniert wunderbar...geht das auch so mit einem AnsiString?
-
Ja, schon. Den musst du aber nicht mit new und delete behandeln. Wäre also um einiges Leichter.
-
nee geht irgendwie nicht, kannst mir das auch nochmal erklären bitte =/!
-
Einen AnsiString in den Header, in den dann Memo1->Text reinschreiben und das daraus dann in RichEdit1->Text reinschreiben. Wo ist das Problem?
-
Hab AnsiString im Header, schreib auch das Memo da rein, aber wie kann ich auf anderer Form den AnsiString auslesen? Wie greif ich darauf zu??
-
du solltest vielleicht mal noch ein tutorial für grundlegende sachen durchmachen..
Form1->...
-
na das hab ich nun schon gemacht...aber damit kann ich nicht darauf zu greifen....glaub mir!
-
ROTFL
@HEZ: Ich bewundere Deine Ausdauer!
-
Ich bin selbst überrascht.
Wo deklarierst du im Header die Variable? Ich hoffe doch, im Public-Bereich.
Und dann greifst du mit Form1->Der_gottverdammte_Variablenname drauf zu. RichEditNummermirdochegal->Text = Form1->Der_gottverdammte_Variablenname.
-
hmm.....sorry, aber es liegt wohl irgendwie am BCB!
Hab ein neues Projekt gemacht, da geht es wunderbar...aber in dem was ich jetzt habe nicht...wobei noch nix drin is!
Also danke erstmal, es funktioniert schon!