Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 10/06/20 in all areas

  1. PingPIng

    [Souce code]

    Hello everybody, These are some projects I have created. I have very little time to manage them all continuously so if anyone wants to collaborate or want to make pull requests, they are welcome Keras4Delphi is a high-level neural networks API, written in Pascal(Delphi Rio 10.3) with Python Binding and capable of running on top of TensorFlow, CNTK, or Theano. Based on Keras.NET and Keras https://github.com/Pigrecos/Keras4Delphi Binary Code generator Written in pascal. It can generate native code for x86 and x64 architectures and supports the whole x86/x64 instruction set. Assembly Code Generator able to compile single File or Single asm Command. https://github.com/Pigrecos/D_CodeGen symbolic execution whith delphi. The Triton Dynamic Binary Analysis (DBA) framework - by JonathanSalwan binding (## experimental ##) for Delphi https://github.com/Pigrecos/Triton4Delphi Code Deobfuscator x86_32/64 Dead code removal Peephole optimization remove Multibranch Protection ..More https://github.com/Pigrecos/CodeDeobfuscator And other.... thanks a lot 😉
  2. You will never leave that phase, just the number of mistakes will shrink over time. At least that's how it has been with me. But on the bright side: Making mistakes - and recognising them - is a great way of learning.
  3. Stefan Glienke

    Vote for SAST support for Delphi in GitLab

    To me that feature request makes little sense without actually pointing to a scan tool that handles Delphi/ObjectPascal as GitLab itself does not do that but just bridges to said external tool - see the second link in the previous comment. Edit: Ah ok, their approach is to build a generic scan engine - see https://gitlab.com/groups/gitlab-org/-/epics/3260 - would been kinda cool to provide some more information before asking to vote for something you have to gather information about on your own.
  4. Famous last woAccess Violation at address $00000000 ...
  5. Daniel

    [Souce code]

    Please describe your projects a little. This will help others to decide to join or not.
  6. The issue here is not the list usage itself but using a list of records. I bet that the difference between the for in loop and the for to loop with accessing the underlying array would be almost zero if the items were objects.
  7. You have not seen this. The classic for loop evaluates the loop ranges exactly once. This is contracted by the language. http://docwiki.embarcadero.com/RADStudio/Sydney/en/Declarations_and_Statements_(Delphi)#For_Statements "For purposes of controlling the execution of the loop, the expressions initialValue and finalValue are evaluated only once, before the loop begins." This sort of FUD is not helpful to anybody.
  8. There were two points in that post. The point about not using Length of the internal list is well made. But my post reacts to the other point in that post which advocated taking a copy of Count into a local variable before the for loop.
  9. In for i := 0 to List.Count - 1 do Foo(I); List.Count is evaluated exactly once.
  10. bdw_nz20

    Does C++ Builder have code completion?

    If you turn on the old compiler for the project it will work again. Under 10.4.1 it works for the new compiler when you don't batch compile. If your on subscription they now have Twin Compile GetIt plugin that with my testing works with code completion and super fast compile of big projects. Amazing that they allow now that to be installed for Pro as well but need subscription to download that, well else buy it. From 10.1.2 was the last edition Code Completion worked well, truly a poor effort by EMB on this.
  11. Here is an example: https://www.embarcadero.com/images/dm/technical-papers/extending-the-delphi-ide.pdf Search for "SaveStateNecessary" to find the relevant chapter.
  12. David Heffernan

    Creating control when Interposer exists

    Your interposer is effectively useless. When you call CardPanel.AddNewCard an instance of Vcl.WinXPanels.TCard is returned. No amount of casting can change that. You are just telling a big fat lie to the compiler. If you use as to cast then you will find out the runtime truth. They issue here is that you are trying to change the instantiated type of the cards. But declaring a new type of card doesn't achieve that since that code lives in the panel class. It's therefore the behaviour of the panel class that you need to modify. In order to get your card types created you should override GetCardClass. http://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.WinXPanels.TCustomCardPanel.GetCardClass You could do that with an interposer for TCardPanel. However, I wonder if perhaps the right thing to do is to stop using GUI controls to store data. GUI controls present data. They should not have knowledge of that data. Code outside of the control should be in charge of that.
  13. The purpose of a class constructor is to initialize the class to a known initial state when it's created. Imagine having to different ways to start your car if you were alone or if you had passengers, just so the system that supports airbags knows whether to only activate the Driver's-side airbag or all of them. Airbag activation based on secondary properties that can't be known until run-time (ie, how many people get into the car) is not part of the object's "initial state". FIRST you start the car. THEN you do other things like activate the airbags. You do NOT want to have different ways of starting the car based on factors that depend upon secondary systems. It doesn't need to be airbags -- it could be A/C vs. Heater; driving in the day vs. at night where lights are required; etc. Creating your objects is like starting the car and getting the engine running. C++ and C# (among others) have a way to inject initial state data into constructors at the time of declaration vs. run-time. Delphi doesn't have that ability, so you need to inject the really core initial parameters in the Create call, and then add others AFTER the object has been initialized via property injection.
×