Met veel pijn en moeite is het me eindelijk gelukt om de inhoud van twee richedits aan elkaa te kunnen plakken mbv Memorystreams zodat ik invloed kan uitoefenen hoe er geplakt wordt (enters weghalen en toevoegen etc).
Ik heb dat eerst geoefend met TFileStreams, zodat ik kon zien wat er gebeurde. Het vreemde is nu dat de procedure met de Memorystreams alleen werkt als ik een andere lege procedure aanroep. Als ik dit neerzet:
Dan werkt het dus. Haall ik echter weg dat dat die oFilestream niet meer wordt gemaakt en AddRTF (waarin dus niks meer staat) dan werkt de procedure ineens niet meer. Hij loopt dan ineens vast op dit stukje:
Met de volgende melding:
Ik heb dat eerst geoefend met TFileStreams, zodat ik kon zien wat er gebeurde. Het vreemde is nu dat de procedure met de Memorystreams alleen werkt als ik een andere lege procedure aanroep. Als ik dit neerzet:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| procedure TfrFormulier.UpdateVoorbeeldClick(Sender: TObject); var i: integer; oMemoryStream1, oMemoryStream2: TMemoryStream; oFileStream : TFileStream; cAddLine: PCHAR; nBuffer, nLength: Integer; begin rchVoorbeeld.Lines.Clear; oMemoryStream1 := TMemoryStream.Create; oMemoryStream2 := TMemoryStream.Create; TRichEdit(clRichEdits[0]).Lines.SaveToStream(oMemoryStream1); oMemoryStream1.Position:=oMemoryStream1.Position-9; TRichEdit(clRichEdits[0]).Lines.SaveToStream(oMemoryStream2); oMemoryStream2.Position := 1; Repeat oMemoryStream2.ReadBuffer(nBuffer,1); Until nBuffer = 123; oMemoryStream2.Position := oMemoryStream2.Position - 1; nLength := oMemoryStream2.Size-oMemoryStream2.Position-9; oMemoryStream1.CopyFrom(oMemoryStream2, nLength); oMemoryStream2.Free; nBuffer:=125; oMemoryStream1.Write(nBuffer,1); oMemoryStream1.Position := 0; rchVoorbeeld.Lines.LoadFromStream(oMemoryStream1); oMemoryStream1.Free; oFileStream := TFileStream.Create('c:\test.rtf',fmCreate); AddRtf(oFileStream, False); end; Procedure TFrformulier.AddRtf(var oFileStream: TFileStream; AddLine: Boolean); var oMemoryStream1, oMemoryStream2: TMemoryStream; cAddLine: PCHAR; nBuffer, nLength: Integer; begin { } end; |
Dan werkt het dus. Haall ik echter weg dat dat die oFilestream niet meer wordt gemaakt en AddRTF (waarin dus niks meer staat) dan werkt de procedure ineens niet meer. Hij loopt dan ineens vast op dit stukje:
Delphi:
1
2
3
| Repeat oMemoryStream2.ReadBuffer(nBuffer,1); Until nBuffer = 123; |
Met de volgende melding:
Ik snap er geen fluit van, want die commando's die ik weghaal komen sowieso pas na dat stukje waar hij op vastloopt. Wat kan er aan de hand zijn, want ik volg het even niet meer---------------------------
Debugger Exception Notification
---------------------------
Project ProjectGrader.exe raised exception class EReadError with message 'Stream read error'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------