Jump to content

Alberto Fornés

  • Content Count

  • Joined

  • Last visited

Community Reputation

7 Neutral

1 Follower

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Alberto Fornés

    Problem with vcl styles in Delphi Alexandria

    I have an application developed with Delphi 10.4 where I use the Diamond vcl style. The app shows up fine, but when I run the same code with Delphi Alexandria it shows a strange result. The main window when the application starts (the same with Delphi 10.4 and Delpgi Alexandria): If I open a second form created by code. The result with Delphi 10.4 is this: But when open with Delphi Alexandria it shows wrong rendering: As you can see the border icons have disappeared, after closing the window, the main screen is also displayed wrong with Alexandria: Any suggestions of things to check?, thanks
  2. Alberto Fornés

    Firebird transactions with Firedac

    Really is that there was no reason not to use it, finally it is what I have done and as Anders suggested it solves the problem. Thanks In this case the date did not work because I need also assign a code from that number. Thanks Anders, now works without repetitions using a generator.
  3. Alberto Fornés

    Firebird transactions with Firedac

    Hello, I have a Firebird table (ORDEN) where I need to have a unique numbering in a field depending on the date. In the before insert of the table I define a trigger that basically does this: SELECT MAX(NUMBER) FROM ORDEN WHERE FECHAINT >= :FECHA INTO :NUM; IF (:NUM IS NULL) THEN NUM = 0; NUM = :NUM + 1; NEW.NUMBER = :NUM; Sometimes numbers are repeated in this table, so I deduce that something is wrong in the handling of transactions to cause this error. I work with Firedac, what are the properties of the connection or the write and read transactions supposed to be to avoid this problem?, thanks
  4. Alberto Fornés

    delphimvcframework global variable

    No , this datamodule should be created at start, and always alive, you reference it from your controller (add datamodule unit to controller), and access it through TMultiReadExclusiveWriteSynchronizer.
  5. Alberto Fornés

    delphimvcframework global variable

    Yes, you can use this in delphimvcframework. I declare such dictionary in the service unit (it's a windows service), or you can put it in a datamodule and create it at program start and destroy at the end. Webmodule can be created and destroyed several times during program execution.
  6. Alberto Fornés

    D11 - A bridge too far.. :-(

    Maybe if you don't have the human resources and / or time to do a good test and find bugs before releasing the product, and you hope that the customers will find and report them, maybe Embarcadero could offer that version at a lower price and establish a more honest relationship.
  7. Alberto Fornés

    Persist data in a stream

    Finally I found how to solve the problem on the computer that was failing (only 24 days have passed!). Unchecking this option (in beta) from the regional settings. Does anyone know how the system identifies that a program is unicode or not?
  8. Alberto Fornés

    Persist data in a stream

    Hi Kas Ob, thanks again. Updated the sample, I included an incorrect file, in case of string fields I save the Tipo and the field size as metadata to generate the dataset again. Stream_Sample_2.zip
  9. Alberto Fornés

    Persist data in a stream

    Hello Kas Ob, thanks for you reply. As I said in second message the problem is not related to Delphi version, is related to computer where I execute the program. The DB is the same, I attach a small demo with the esential part of code where I can verify the error. When I open the program a TFDMemTable with different fields defined is open, I add a record with some values and use the add image button to load a blob field (in this case bitmap image included in sample code, that you can see on picture) : When Save Table button is pushed the data and some table metadata is used to fill a stream that can be saved in a file, although you can use de load table button to fill a second TFDMemTable with this stream, and assign the dataource to this dataset, in this case and in a certain computer the image is not readed correctly (in other blob cases this is an error): If you want to load the stream from saved file, push load stream button and then load table). The same program in other computer (it doesn't matter Delphi 10.3 or Delphi 10.4) works well, so I think it's a pc configuration that I can't guess. Stream_Sample_2.zip
  10. Alberto Fornés

    Persist data in a stream

    I expand the information, doing more tests I have verified that it is not a problem associated with Delphi 10.3 vs Delphi 10.4, I made that statement because I have two computers, one with Delphi Rio and the other with Delphi Sydney, but installing Delphi 10.3 on the other computer I have verified that the problem is due to the computer (Windows 10 in both cases). Any suggestions on any pc configuration that might motivate this?
  11. Alberto Fornés

    Persist data in a stream

    Hello, in a data exchange between vcl clients and a REST server, I have implemented a method to save the data in a stream, that stream I send to the client and it loads the data in a reverse process. I do this to reduce the information to be sent as much as possible and I do not directly use a SaveToStream of the table, query or stored procedure. The information of the fields I read from the IFDDataSetReference interface, and I have a problem when saving the blob fields, the procedure worked with Delphi 10.3 but with Delphi 10.4 there is something different that I cannot guess (I have a professional version and I do not have access to the FireDac code ) . The abbreviated code for the procedure is: //iData = IFDDataSetReference //FieldData = array of Fields ab: TArray<Byte>; bd: AnsiString; nl: Int64; var ADest:= TMemoryStream.Create; var wr:= TBinaryWriter.Create(ADest,TEncoding.UTF8,false); for i:= 0 to iData.DataView.Rows.Count - 1 do begin for c:= Low(FieldData) to High(FieldData) do begin //when blob field I do this begin //ValueI is a variant bd:= iData.DataView.Rows[i].ValueI[c]; //bd value is not the same in Delphi 10.3 as in Delphi 10.4 ab:= TEncoding.ANSI.GetBytes(bd); nl:= Length(ab); wr.Write(nl); wr.Write(ab); end; end; end; In client side I can read de stream with: ADest: TFDMemTable; nl:= sR.ReadInt64; if (nl = 0) then begin ADest.Fields[c].AsBytes:= nil; end else begin ADest.Fields[c].AsBytes:= sR.ReadBytes(nl); end;
  12. Alberto Fornés

    Close a TIdTCPClient connection

    Thanks Remy, your words are greatly appreciated on this topic. That's right, the host only accepts one connection, and the message is sent by it. I will find a way to close the connection (maybe restart the device) so that I can connect again.
  13. Alberto Fornés

    Close a TIdTCPClient connection

    Hello, I have created a thread where there is a TIdTCPClient component that receives readings from a barcode reader connected through an ethernet base. The goal is for you to be in a connected service all day without stopping. The thread works, I can start and stop it several times, when I stop the thread I execute these steps to close the connection (FClient = TIdTCPClient): FClient.IOHandler.InputBuffer.Clear; FClient.IOHandler.CloseGracefully; FClient.Disconnect; FClient.Socket.Close; I don't know if they are all necessary, but I have tried to get the desired result. To test, I need to achieve a reconnection when a network failure is detected (for this I disconnect the cable from the pc), when I detect an error in the reading: try FData: = FClient.IOHandler.ReadLn; except on E: Exception do begin FClient.IOHandler.InputBuffer.Clear; FClient.IOHandler.CloseGracefully; FClient.Disconnect; FClient.Socket.Close; // Terminate thread end; In this second case, when I try to connect again, I get this message from the base: This channel is already in use, no slot is available. It seems that the old host-port socket remains active: how can I ensure that it is closed?
  14. Alberto Fornés

    Install recent Delphi versions on Windows XP

    Hello, sorry for delay to respond, I was talking about executables generated with Delphi 10.3, not about installing Delphi 10.3 in a XP computer. I'm able to run the programs, except the problem with themes in some contros, as datatimepicker so I need to disable theme for that controls.
  15. Alberto Fornés

    Speed of Graphics32

    Years ago I was testing various possibilities to display points, lines, polygons, etc. on a map, with various libraries and OpenGL was the one who did it the fastest, perhaps showing text found worse performance.