Search the Community
Showing results for tags 'xe7'.
Found 3 results
Hello, I am busy with for quite awhile now with an issue with no results. I have looked many internet sites, but without any luck at all. > > I am trying to insert/update (text/image) data via a Client to a Datasnap Server by using FDQuery and ExecSQL (XE7 with Interbase 2017). > > If I only make the use of text, insertion and/or updation works fine and perfect without any problems. > But as soon as I add an extra image parameter as Stream, the following error message is produced: > > "HTTP/1.1 500 Internal Server Error" > > But the record INCLUDING the image stream is inserted into the remote Datasnap database, but my client application afterwards crashes and produces another access violation error upon closing the client app. > > So everything works fine/perfect with text only, WITHOUT image (stream) param. > > My server method uses FDQuery component for the insert (and one for update not included in this example)): > > // Push punch data to HQ > Function TdmServerMethod.iApp_PushPunch(FPdtFrom, FPdtDateIn, FPmsPic: TMemoryStream): Boolean; > Begin > Result := True; // Init > With qryPushPunch Do Begin //FDQuery component > Try > FPmsPic.Position := 0; // FPmsPic.Seek(0, soFromBeginning); Return cursor of stream to the beginning > Close; // Make sure dataset is not active > ParamByName('EP_FROM').AsDate := FPdtFrom; > ParamByName('TS_DATEIN').AsDate := FPdtDateIn; > ParamByName('TS_PICIN').AsStream := FPmsPic; THIS LINE WILL CAUSE/PRODUCE THE ERROR > ParamByName('TS_PICIN').LoadFromStream(FPmsPic, ftBlob); THIS LINE WILL CAUSE/PRODUCE THE ERROR > ExecSQL(); // Execute SQL statement > CloseStreams; // Cleanup stream > Close; // Cleanup dataset > Except > Result := False; > End; > End; > End; > > My Client REST method is as follow: > > Function TdmServerMethodClient.iApp_PushPunch(FPdtFrom: TDateTime; FPdtDateIn: TDateTime; FPmsPic: TMemoryStream; Const ARequestFilter: String): Boolean; > Begin > If FiApp_PushPunchCommand = Nil Then Begin > FiApp_PushPunchCommand := FConnection.CreateCommand; > FiApp_PushPunchCommand.RequestType := 'POST'; > FiApp_PushPunchCommand.Text := 'TdmServerMethod."iApp_PushPunch"'; > FiApp_PushPunchCommand.Prepare(TdmServerMethod_iApp_PushPunch); > End; > FiApp_PushPunchCommand.Parameters.Value.AsDateTime := FPdtFrom; > FiApp_PushPunchCommand.Parameters.Value.AsDateTime := FPdtDateIn; > FiApp_PushPunchCommand.Parameters.Value.SetStream(FPmsPic, FInstanceOwner); > FiApp_PushPunchCommand.Execute(ARequestFilter); AFTER EXECUTION THE ERROR "HTTP/1.1 500 INTERNAL ERROR" IS TRIGGERED, BUT THE RECORD INCLUDING THE IMAGE IS PERFECTLY INSERTED/UPDATED IN DE DATABASE > Result := FiApp_PushPunchCommand.Parameters.Value.GetBoolean; > End;
Hey, I've got a problem where watch list fails to evaluate things like Self.ClassName Self.ClassType It just returns inaccessible value despite a valid object reference, if I use the Evaluate/Modify window instead of the watch list it works just fine. I've also experienced other problems like not being able to inspect a TRect record passed as function parameter ( IDE says symbol eliminated by linker, despite it being used in the body of the function). I have optimization turned off, I've also deleted all .dcu files and rebuilt the project several times over. Nothing seem to work. What gives? I think this happened to me before and I had to rebuild .dproj from scratch but not sure, I will try that as last resort.
I have a small project in XE7, which is newish to me, where I have to get rid of an Access Violation error on exiting the application. From the error log, I know something is amiss vis-a-vis the arrays I'm trying to clean up. I have one global constant static arrays of strings, two global static arrays of extended and two global static arrays of strings. I have tried to use the setLength method for the cleaning up of the arrays, the finalize method, freeAndNil, free and setting the arrays to nil. My attempts sometimes survive compiling, sometimes don't. Researching the issue on the internet seems mostly to focus on dynamic array clearing. Not much about static arrays and not a solution that I could find. I've tried placing the clearing attempts in OnCloseQuery and disastrously in OnClose. At this point, I'm stumped. Is there a definitive way to do this? GM My creation code in the main form looks like this: var ... ar1: Array [1..100] of string; ar1Total: Array [1..100] of extended; ar2: Array [1..100] of string; ar2Total: Array [1..100] of extended; const TonerColors: TArray<string> = ['Cyan', 'Magenta', 'Yellow','Black'];