Jump to content

Search the Community

Showing results for tags 'delphi'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Delphi Questions and Answers
    • Algorithms, Data Structures and Class Design
    • VCL
    • FMX
    • RTL and Delphi Object Pascal
    • Databases
    • Network, Cloud and Web
    • Windows API
    • Cross-platform
    • Delphi IDE and APIs
    • General Help
    • Delphi Third-Party
  • C++Builder Questions and Answers
    • General Help
  • General Discussions
    • Embarcadero Lounge
    • Tips / Blogs / Tutorials / Videos
    • Job Opportunities / Coder for Hire
    • I made this
  • Software Development
    • Project Planning and -Management
    • Software Testing and Quality Assurance
  • Community
    • Community Management

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start




Found 113 results

  1. I have a Delphi 10.4.2 project that has issues when clicking the file [lighttheme.pas] in the Projects window on the right. It won't open the file. I loads information into the Object Inspector but the file doesn't create a tab at the top. This file does not an associated .DFM. Its a unit file that holds procedures. The only way i can get it to open where i can edit it is to close my project then choose File | Open...and open the file that way. I have also tried to remove it and re-add it to my project with no change. Something is stuck somewhere. Any ideas?
  2. Nicolò Blunda

    Get copyright info from code in macOS

    Hello. With this code (working on macOS) I get application version info: VersionInfoString:= (TNSString.Wrap(CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle, kCFBundleVersionKey))).UTF8String; I want to retreive the copyright info too. In info.plist the copyright string is the NSHumanReadableCopyright key value. It is possible to adapt code above to get it?
  3. Habarisoft released new versions of its native STOMP client libraries for Delphi / Object Pascal for open source message brokers: * Habari Client for ActiveMQ 7.2 – tested with Apache ActiveMQ 5.16.5 and 5.17.1 * Habari Client for Artemis 7.2 – tested with Apache ActiveMQ Artemis 2.23.1 * Habari Client for OpenMQ 7.2 – tested with Eclipse OpenMQ 6.3.0 * Habari Client for RabbitMQ 7.2 – tested with RabbitMQ 3.9.22 and 3.10.7 Release notes Full release notes can be found at: https://www.habarisoft.com/release_notes.html Home page, demo download, full documentation: https://www.habarisoft.com/ About Habari STOMP Client libraries Habari STOMP Client libraries enable Object Pascal applications to take advantage of message broker / message queue technology - which is distributed, loosely coupled, reliable and asynchronous - to build integrated systems, using peer-to-peer and publish-subscribe communication models.
  4. Goal: I have configured my app to be opened by some links in iOS, like myapp://lala (using custom scheme), or https://myapp.com/c/lala using universal links, and is already opening my app, but i need to know which url that opened my app. (There is even a tutorial in FMX Express) Problem: I'm trying to handle incoming url from my ios app unsuccessfully. On iOS this should be done by capturing event TApplicationEvent.OpenURL like: procedure TipUrlHandler.ApplicationEventMessageHandler(const ASender: TObject; const AMessage: TMessage); begin case TApplicationEventData(TApplicationEventMessage(AMessage).Value).Event of TApplicationEvent.OpenUrl: HandleUrl(TiOSOpenApplicationContext(TApplicationEventData(TApplicationEventMessage(AMessage).Value).Context).URL); else end; end; Mas o TApplicationEvent.OpenUrl nunca é chamado. So I checked the class TApplicationDelegate in the unit FMX.Platform.iOS.pas in which the TApplicationDelegate.applicationOpenURLWithOptions function should be called every time the app is opened by a url as Apple documents: https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc class function TApplicationDelegate.applicationOpenURLWithOptions(self: id; _cmd: SEL; application: PUIApplication; url: Pointer; options: PNSDictionary): Boolean; So I went to check if the applicationOpenURLWithOptions method is being added correctly in TApplicationDelegate.CreateDelegateMetaClass: class procedure TApplicationDelegate.CreateDelegateMetaClass; begin ... // Opening a URL-Specified Resource if TOSVersion.Major >= 9 then class_addMethod(DelegateClass, sel_getUid('application:openURL:options:'), @applicationOpenURLWithOptions, 'B@:@@@@') else ... end; And then I was able to prove it wrong! The number of arguments declared is wrong, as the correct one should be B@:@@@ Then I made the modification to FMX.Platform.iOS.pas, being as follows: class procedure TApplicationDelegate.CreateDelegateMetaClass; begin ... // Opening a URL-Specified Resource if TOSVersion.Major >= 9 then class_addMethod(DelegateClass, sel_getUid('application:openURL:options:'), @applicationOpenURLWithOptions, 'B@:@@@') else ... end; But the TApplicationDelegate.applicationOpenURLWithOptions function is not yet called. What is wrong? @EDIT Sorry! It is working for custom schemes like "myapp://lala" (with or without the correction in FMX.Platform.iOS.pas) but it is not working for universal links like https://myapp.com/c/lalala. Although I have already configured the universal link correctly and when I click on this universal link, the iOS open my app, but the url can't be handle with TApplicationEvent.OpenUrl, but I discovered that the handling of incoming url of a universal link is different: Handling Universal Links
  5. I have a TEdgeBrowser log into a website that has PDF records we need to download to our system. When I enter the URL for the PDF, the PDF is loaded into the browser. How can I download the PDF instead of displaying it? Thanks, Sidney
  6. Clément

    Project manager feature

    Hi, I was wondering if there's a feature (or plugin) that would allow me to right click a folder and add a new unit direct in that folder. For example: When I right-click "task.code" folder, I would like the context menu to display two new options "add new unit" and "add new existing unit". When selecting "add new unit", "Unit1.pas" would be created under "task.code" allowing me to renaming that unit directly and start working on it. Do you know if there's such a tool? I'm using D11.1 TIA, Clément
  7. Hi all. To complete my first Python + DelphiVCL program I need to expose to Python an extra Image Viewer Control. I don't want to create a custom delphivcl.pyd which is a good thing remains original and installable with pip install delphivcl, so I've tried to add the component in a custom package. Well, seems simple to do but does not work fine... The control to expose is TImgView32 which inherits from: TImgView32->TCustomImgView32->TCustomImage32->TCustomPaintBox32->TCustomControl so it is close to TLabel and looking at DelphiVCL code I've made same steps: library cnc_vision_ext; uses osPyCncVisionExt in 'sources\osPyCncVisionExt.pas'; exports PyInit_cnc_vision_ext; {$E pyd} begin end. unit osPyCncVisionExt; interface uses PythonEngine; function PyInit_cnc_vision_ext: PPyObject; cdecl; implementation uses System.Classes, System.SysUtils, System.Variants, Winapi.Windows, Vcl.ExtCtrls, VarPyth, WrapDelphi, WrapVclExtCtrls, WrapVclControls, WrapDelphiClasses, GR32_Image; type TPyDelphiImgView32 = class(TPyDelphiControl) private function GetDelphiObject: TImgView32; procedure SetDelphiObject(const Value: TImgView32); public class function DelphiObjectClass: TClass; override; property DelphiObject: TImgView32 read GetDelphiObject write SetDelphiObject; end; TPyExtensionManager = class private FEngine: TPythonEngine; FModule: TPythonModule; FWrapper: TPyDelphiWrapper; public procedure WrapperInitializationEvent(Sender: TObject); end; var ExtensionManager: TPyExtensionManager; { module import functions } function PyInit_cnc_vision_ext: PPyObject; begin Result := nil; try ExtensionManager.FEngine := TPythonEngine.Create(nil); ExtensionManager.FEngine.AutoFinalize := False; ExtensionManager.FEngine.UseLastKnownVersion := True; ExtensionManager.FEngine.LoadDllInExtensionModule(); ExtensionManager.FModule := TPythonModule.Create(nil); ExtensionManager.FModule.Engine := ExtensionManager.FEngine; ExtensionManager.FModule.ModuleName := 'cnc_vision_ext'; ExtensionManager.FWrapper := TPyDelphiWrapper.Create(nil); ExtensionManager.FWrapper.Engine := ExtensionManager.FEngine; ExtensionManager.FWrapper.Module := ExtensionManager.FModule; ExtensionManager.FModule.Initialize; ExtensionManager.FWrapper.OnInitialization := ExtensionManager.WrapperInitializationEvent; ExtensionManager.FWrapper.Initialize; Result := ExtensionManager.FModule.Module; except end; end; { TPyDelphiImgView32 } class function TPyDelphiImgView32.DelphiObjectClass: TClass; begin Result := TImgView32; end; function TPyDelphiImgView32.GetDelphiObject: TImgView32; begin Result := TImgView32(inherited DelphiObject); end; procedure TPyDelphiImgView32.SetDelphiObject(const Value: TImgView32); begin inherited DelphiObject := Value; end; { TPyExtensionManager } procedure TPyExtensionManager.WrapperInitializationEvent(Sender: TObject); begin FWrapper.RegisterDelphiWrapper(TPyDelphiImgView32); end; initialization ExtensionManager := TPyExtensionManager.Create; finalization ExtensionManager.Free; end. Well, compilation OK and import on Python OK, but when I try to create the object assigning the parent I got that: from delphivcl import * from cnc_vision_ext import * class TestForm(Form): def __init__(self, owner): # print type of self ('__main__.TestForm') print(type(self)) # create a vcl label and assign parent: WORKS self.label = Label(self) self.label.Parent = self self.label.Left = 10 self.label.Top = 10 self.label.Caption = 'Hello World' # create a ext image and assign parent: ERROR self.image = ImgView32(self) # <-- AttributeError: Owner receives only Delphi objects self.image.Parent = self self.image.Left = 10 self.image.Top = 30 self.image.Width = 200 self.image.Height = 100 def main(): Application.Initialize() Application.Title = 'test' MainForm = TestForm(Application) MainForm.Show() FreeConsole() Application.Run() if __name__ == '__main__': main() ù If I check with a Python console the types seem very close: D:\x\develop\qem\cnc_vision_1>python Python 3.9.12 (tags/v3.9.12:b28265d, Mar 23 2022, 23:52:46) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from delphivcl import * >>> from cnc_vision_ext import * >>> frm = Form(None) >>> lbl = Label(frm) >>> lbl.Parent = frm >>> type(lbl) <class 'Label'> >>> lbl.__doc__ 'Wrapper for Delphi TLabel\n' >>> lbl.ClassName 'TLabel' >>> img = ImgView32(frm) # does not work with frm as like as lbl Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: Owner receives only Delphi objects >>> img = ImgView32(None) # try with none to check object type >>> type(img) <class 'ImgView32'> >>> img.__doc__ 'Wrapper for Delphi TImgView32\n' >>> img.ClassName 'TImgView32' Thank you in advance for any suggestion 🙂
  8. delphi159

    Clientdataset's delta becomes empty

    I have "briefcase model application". Clientdataset reads data from xml-file. After closing modified data are saved in the xml-file. When click on "applyUpdate" button, data are saved in firebird db. If I don't exit program then ApplyUpdate works properly and commits delta-packet in db but sometimes, after closing-opening program 3- 4-5 times, for no clear reason delta becomes empty and after that if I click on "apply" button ApplyUpdates(-1) operator causes exception "access violation". Delphi 10.4, update 2. Firebird3. Project and db files on google drive: https://drive.google.com/drive/folders/1UvtGmaWLdmmSYQITWpEvp-BwRNmw9VEL?usp=sharing unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, Datasnap.DBClient, FireDAC.Comp.DataSet, FireDAC.Comp.Client, Datasnap.Provider, Vcl.StdCtrls, Vcl.Buttons, Vcl.ComCtrls, Vcl.Grids, Vcl.DBGrids, FireDAC.UI.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Phys, FireDAC.Phys.FB, FireDAC.Phys.FBDef, FireDAC.VCLUI.Wait, MidasLib; type TForm1 = class(TForm) LabelStatus: TLabel; LabelChangeCount: TLabel; DBGrid: TDBGrid; bApply: TBitBtn; DBGrid2: TDBGrid; bClose: TButton; bOpen: TButton; bMerge: TBitBtn; DataSource1: TDataSource; DataSetProvider1: TDataSetProvider; qGoods: TFDQuery; cdsGoods: TClientDataSet; DataSource2: TDataSource; FDConnection1: TFDConnection; FDTransaction1: TFDTransaction; qGoodsGOODS_ID: TIntegerField; qGoodsGOOD: TWideStringField; qGoodsQNT: TWideStringField; procedure bApplyClick(Sender: TObject); procedure bCloseClick(Sender: TObject); procedure bOpenClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure cdsGoodsAfterPost(DataSet: TDataSet); procedure DataSource1DataChange(Sender: TObject; Field: TField); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var Form1: TForm1; FN: TFileName; MySavePoint: integer; Modified: boolean; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin qGoods.Open; FN:= ExtractFilePath(ParamStr(0)) + 'cds.xml'; cdsGoods.filename:= FN; cdsGoods.Close; cdsGoods.open; MySavePoint:= cdsGoods.SavePoint; end; procedure TForm1.bApplyClick(Sender: TObject); begin cdsGoods.ApplyUpdates(-1); qGoods.Refresh; MySavePoint:=cdsGoods.SavePoint; Modified:= false; end; procedure TForm1.bCloseClick(Sender: TObject); begin cdsGoods.Close; end; procedure TForm1.bOpenClick(Sender: TObject); begin cdsGoods.Open; end; procedure TForm1.cdsGoodsAfterPost(DataSet: TDataSet); begin Modified:= true; end; procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin case cdsGoods.UpdateStatus of usUnmodified: labelStatus.Caption:='record didnt change'; usModified: labelStatus.Caption:='record was modified'; usInserted: labelStatus.Caption:='record was inserted'; usDeleted: labelStatus.Caption:='record was deleted'; end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin qGoods.close; cdsGoods.Close; end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if Modified then case application.MessageBox(PwideChar('Data were changed. Save changes?'), '', MB_YESNOCANCEL+MB_ICONQUESTION) of IDCancel: CanClose:=false; IDNo: cdsGoods.SavePoint:=MySavePoint; // IDYES- no needed. Cds is saved auomatically after close // cdsGoods.saveToFile(FN); end; end; end.
  9. I want to write some simple application (the app I've always dreamed of) that will show Football Chamionships (user can enter match results and app will show tables and some statistics). My problem is sorting groups in Chamionships Group Stage (Quatar 2022). As we know, there are 8 groups (A-H) with 4 Teams each. Lets focus on Group A. So, we have 4 teams: A1, A2, A3 and A4. ONLY 2 OF THEM CAN PLAY IN KNOCKOUT STAGE. How to know which one? Anyone of you solved such problem? FIFA says: The ranking of teams in the group stage is determined as follows: 1. Points obtained in all group matches; 2. Goal difference in all group matches; 3. Number of goals scored in all group matches; 4. Points obtained in the matches played between the teams in question; 5. Goal difference in the matches played between the teams in question; 6. Number of goals scored in the matches played between the teams in question; 7. Fair play points in all group matches (only one deduction can be applied to a player in a single match): - Yellow card: −1 point; - Indirect red card (second yellow card): −3 points; - Direct red card: −4 points; - Yellow card and direct red card: −5 points; 8. Drawing of lots. I need to cover 6 points (7 and 8 can be ignored for the moment). There are 6 matches in Group, each Team play with another from group. A1:A2 | A3:A4 A1:A3 | A4:A2 A4:A1 | A2:A3 I have no idea how to sort teams with FIFA guidelines. Have you got any idea? How to cover all conditions in one sort function? Could you maybe write for me some code to show how to do this? Ps: If this is to difficult/complex - how much many would it cost for you to write some simple solution for me? -Pawel
  10. Piotr0603

    Deployment Android apk

    Hi, I am new in Delphi (10.4 Community Edition) developing on Android devices. I want to add a little text file to my apk on Android device. I do all what is described in https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Deployment_Manager: (Alexandria or 10.4 - the diffirence does not matter I think) 1. choose file in my laptop (Windows 10) - file is shown in Deployment Manager with the same name 2. in column "remote path" write the name of directory on Android device: .\assets\internal\Android\data\com.android.Tuczarnia\files\ (Tuczarnia is the name of apk) 3. build the apk 4. my file can't be found on folder ..internal\Android\data\com.android.Tuczarnia\files\ 5. I noticed that 'Connect" button in Deployment Manager is not active and all files have status "Not Connected", but it seems (after reading help of Deployment Manager) that this works automatically for Android 6. and I noticed, after unzipping the "apk" file, that my file is present in "assets/internal/Android/data/com.android.Tuczarnia/files/" inside that file 7. so it seems to me, that file is lost during the process of installing the apk - WHY? I use and have 1. Windows 10 2. Delphi 10.4 Community Edition 3. phone Xiaomi Redmi 8 with Android 10 Important: my application works fine without adding this file, application has over 10 screens and uses SQLite with no problems. So only one and new problem is adding new file. Thanks in advance to everyone piotr0603
  11. How to set the affinity for TOmniThread/TOmiTaskControl, it is keep on resetting the default affinity value (utilizing all CPU's). I tried setting Environment.Process.Affinity.AsString, but this value also keep on changing to default (255), it is happening when the OmiThread starts, I see it have many properties to set the affinity, but I'm not sure how to set it.
  12. tinyBigGAMES

    GameVision Toolkit

    Ahh, finally at a point where I can start to update my GameVision framework to support modern PCs. This new generation will power upcoming game projects. I created a Facebook group for it, and I plan to post frequently about my progress. If you wish to follow, then you're invited to the cookout. Stop by and hang. Cold beer, burgers on the grill. LOL. https://www.facebook.com/groups/gamevisiontoolkit
  13. The FireMonkey Low Code App Wizard works fine on Delphi 11 (in RAD Studio 11). The generated project runs without issue. However, after upgrading to 11.1, whenever I run any generated project by the wizard, I got an error, like this: After using the debugger to trace the error source, I found that when the program runs to this line (in the function TScreenOrientationMonitor.GetScreenOrientation in Model.Types.pas) the error will be raised. Since I'm new to this wizard, can anyone please share any clue with me? Thanks a lot.
  14. misc_bb

    PDF Library

    Any recommendations for Delphi library for PDF handling? I'm currently working on merging multiple files into 1 pdf file. Fast-reports said it handle this, any thoughts?
  15. I am emailed html files that link to a Cisco "Secure Email Encryption Service". I can load the downloaded html into a TEdgeBrowser, manually enter the password, click the button, and access the content using document.innerHTML. I need to be able to get the program to fill in the password and click the submit button. Nothing happens when I execute the code I expect to work. I created the following a test form which uses the same input and button: <form action="https://www.google.com" method="post"> Password: <input name="key1" id="passwordInput1" autocomplete="off" type="password"><br> <input type="submit" "id="text_i18n.authframe.safr.button.openonline" value="Open Online" name="openButton"> </form> I set the password using: document.getElementById("passwordInput1").value = 'mypass' I click the button using: document.querySelector("input[type=submit]").click(); Everything works as expected with my test form but I am unable to accomplish this with the "Secure" form. This is likely because the values are embedded in other elements. The structure is very complex and I am leaving out many table rows and other details. I think I have identified the important elements as shown below: <table id="outerTable" <tbody> <tr> <td id="iframelocation"> <iframe id="authFrame" #document >html> <body> <form> <table class="mainWIndow"> <tbody> <tr> <td id="heightControl" <table> <tbody> <tr> <td> <table id=borderTable"> <tbody> <tr> <td id=passwordEntry1"> <p> <input size="20" maxlength="127" name="key1" id="passwordInput1" placeholder="Secure Email Encryption Service Password" title="Enter your password here" autocomplete="off" type="password" style="width: 100%;"> </input> The button is in <td id="openButtonLocation"> in <td id="buttonContainer" eventually going batck to <tr id=buttonRow", etc. and is defined as: <input type="submit" id="text_i18n.authframe.safr.button.openonline" value="Open Online" name="openButton" onclick="openOnline()" class="btn"> The ExecuteScript seems to only execute one line of javascript so I am not sure how to access the field and the button. What do I need to do differently? I would also like to be able to accomplish this using the types (password and submit) instead of the Id once I get this working. Thanks
  16. tinyBigGAMES

    Spark Game Toolkit

    Spark Game Toolkit is a work-in-progress, open-source 2D game development system for Delphi. If you wish to contribute to its development, fantastic. If you are only curious about game libraries and only wish to look around or just use it, cool too. It's early in development and will be updated frequently. PRs are welcome. Be sure to join our discord server, follow us on twitter, connect with us over at our website or just spread the word. Any help appreciated. Continue to check the GitHub repo, more information will be provided as the project takes shape. https://github.com/tinyBigGAMES/Spark
  17. Albion

    Calculation problem

    Good afternoon, I encountered such a problem, when executing a python script, the calculations are not written to the output fields, and therefore cannot go further, since they take values from them. Can anyone tell me what I did wrong?
  18. Hi all, I'm looking to distribute my android app on play store using Delphi 10.3. I know I should upgrade to Delphi 11, but trying to compile the app in the new version I'm stuck in a number of memory or compilation issues. When on Delphi 10.3 I try to start the project deployment I always get the same error "[PAClient Error] Error: E0002 Missing profile name; use paclient -? For Help". I tried to use various versions of the SDK: I tried 26, 28, 29 and even 30 but nothing. When I compile it in development mode both in debug and in release I can load it on my smartphone with Android 10, while compiling it in Release and Application Store mode I get the error mentioned. Some idea? Thanks in advance
  19. Dear visitors,  We are offering excellent opportunity to get 35% off on our Next Suite Delphi (VCL) Components. Just use EASTER coupon code on the checkout page to get 35% off. Click here for Online Store and Prices . NextSuite includes always growing set of VCL components. Most important components are: NextGrid6 (StringGrid/ListView replacement, written from scratch). NextDBGrid6 (Db variant of the grid) NextInspector6 - An object inspector component. Next Collection 6 - A set of smaller components that are both useful and easy to use. new Next Canvas Application - a drawing application that wysiwyg convert your drawings into a valid Delphi TCanvas code.   and many more.  Few screenshots:     Download big demo project from: http://www.bergsoft.net/downloads/vcl/demos/nxsuite6_demo.zip  Best regards  Boki (BergSoft) boki@bergsoft.net | LinkedIn Profile -- BergSoft Home Page: www.bergsoft.net Members Section: bms.bergsoft.net Articles and Tutorials: developer.bergsoft.net (Developers Network) -- BergSoft Facebook page -- Send us applications made with our components and we will submit them in news article. Link to this page will be also set on home page too.
  20. Albion

    Testing with python

    Good day everyone! I have a question. Perhaps someone has already experienced this. I have a ready-made program on Delphi. And I need to initialize and execute all the functions of this program using a Python script. Is it possible to accomplish this task only with the help of TPytnon components? Without adding memos and other things as shown in the demo programs. Just run the script and get the result. Maybe someone can help with this question. I would be very grateful for any help. Thanks for attention.
  21. Using Livebindings to link a TDataset to a TListview on the same TForm is fine. But I'm still struggling to find a way to connect a TDataset on a TDataModule and a TListView on a TForm using Livebindings. It seems that both the LiveBindings Wizard and the LiveBindings Designer can only work on a datamodule or a form at a time. Is there a standard way to do that, or it's just not possible? Thanks.
  22. I'm using the "SSH_Pascal" library and creating an SSH connection via delphi. After a lot of effort I discovered that it is necessary to have your RSA key and your host in this file called "known_hosts" in windows it is usually at: %USERPROFILE% + .ssh\known_hosts To create an RSA key using openSSH via CMD is simple, see the command: ssh-keyscan -t rsa your host There, your RSA key is created. The only difficulty I'm having is getting this RSA via cmd and adding it to the file. the simplest way through cmd would be: ssh-keyscan -t rsa your host > %USERPROFILE% + .ssh\known_hosts To insert the value into the file. But using by delphi is not working. I tried using a function(GIst.Github) to get the DOS output, without success. When it enters This step of the Function WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil); it hangs It just hangs. I've tried to increase the buffer size but without success, does anyone have any ideas?
  23. tinyBigGAMES

    SFML for Pascal

    SFML Simple Fast Multimedia Layer Bindings that allow you to use SFML and other useful C libraries with Pascal. Included CSFML (https://github.com/SFML/CSFML) pl_mpeg (https://github.com/phoboslab/pl_mpeg) Nuklear (https://github.com/Immediate-Mode-UI/Nuklear) physfs (https://github.com/icculus/physfs) minizip (https://github.com/madler/zlib) SDL (https://github.com/libsdl-org/SDL) Minimum Requirements Windows 10+ (64 bits) Delphi Community Edition (Win64 target only) FreePascal 3.2.2 (Win64 target only) Usage Add SFML to your uses section to access all the aforementioned libraries. You link to SFML dynamically by default and will look for the SFML DLL in your application path. You can also call InitSFML, before any other routine, with a the path to the DLL location. Define SFML_STATIC in SFML.pas to statically link to SFML and the DLL will not have to be included in your application distro. InitSFML will have no effect and you can leave it in your sources so that you can switch between static and dynamic linking during development. uses SysUtils, SFML; var Mode: sfVideoMode; Window: PsfRenderWindow; Event: sfEvent; Music: PsfMusic; begin Mode.Width := 800; Mode.Height := 600; Mode.BitsPerPixel := 32; Window := sfRenderWindow_create(Mode, 'Hello SFML', sfResize or sfClose, nil); Music := sfMusic_createFromFile('arc/audio/music/song01.ogg'); sfMusic_play(Music); while sfRenderWindow_isOpen(Window) = sfTrue do begin while sfRenderWindow_pollEvent(Window, @Event) = sfTrue do begin if Event.kind = sfEvtClosed then sfRenderWindow_close(Window); end; sfRenderWindow_clear(Window, DARKSLATEBROWN); sfRenderWindow_display(Window); end; sfMusic_stop(Music); sfMusic_destroy(Music); sfRenderWindow_destroy(Window); end. Support Issues Discussions SFML website SFML on YouTube
  24. tinyBigGAMES

    CPas - C for Delphi

    Overview What if you were able to load and use C99 sources directly from Delphi? There is a vast quantity of C libraries out there and being able to take advantage of them, without being a pain would be nice. You could even compile a bunch of sources and save them as a library file, then load them back in from disk, a resource or even from a stream. You can get the symbols, map to a C routine, and execute from the Delphi side all from a simple API. Downloads Releases - These are the official release versions. Features Free for commercial use. Allow C integration with Delphi at run-time. Support Windows 64-bit platform. Support for C99. Fast run-time compilation. Can run C sources directly or compile to (.LIB, .EXE, .DLL). Library files can be loaded and used at run-time from a file, a resource or stream. Import symbols directly from a dynamic linked library (.DLL) or module-definition (.DEF) file. You can reference the symbols from Delphi and directly access their value (mapping to a routine and data). Your application can dynamically or statically link to CPas. Direct access to the vast quantity of C99 libraries inside Delphi. Minimum System Requirements Delphi 10 (Win64 target only) FreePascal 3.3.3 (Win64 target only) Microsoft Windows 10, 64-bits 20MB of free hard drive space How to use in Delphi Unzip the archive to a desired location. Add installdir\sources, folder to Delphi's library path so the CPas source files can be found for any project or for a specific project add to its search path. Add installdir\bin, folder to Windows path so that CPas.dll file can be found for any project or place beside project executable. See examples in installdir\examples for more information about usage. You must include CPas.dll in your project distribution when dynamically linked to CPas. See CPAS_STATIC define in the CPas unit file. See installdir\docs for documentation. A Tour of CPas CPas API You access the easy to use API in Delphi from the CPas unit. {.$DEFINE CPAS_STATIC} //<-- define for static distribution type { TCPas } TCPas = type Pointer; { TCPasOutput } TCPasOutput = (cpMemory, cpLib); { TCPasExe } TCPasExe = (cpConsole, cpGUI); { TCPasErrorMessageEvent } TCPasErrorEvent = procedure(aSender: Pointer; const aMsg: WideString); { Misc } function cpVersion: WideString; { State management } function cpNew: TCPas; procedure cpFree(var aCPas: TCPas); procedure cpReset(aCPas: TCPas); { Error handling } procedure cpSetErrorHandler(aCPas: TCPas; aSender: Pointer; aHandler: TCPasErrorEvent); procedure cpGetErrorHandler(aCPas: TCPas; var aSender: Pointer; var aHandler: TCPasErrorEvent); { Preprocessing } procedure cpDefineSymbol(aCPas: TCPas; const aName: WideString; const aValue: WideString); procedure cpUndefineSymbol(aCPas: TCPas; const aName: WideString); function cpAddIncludePath(aCPas: TCPas; const aPath: WideString): Boolean; function cpAddLibraryPath(aCPas: TCPas; const aPath: WideString): Boolean; { Compiling } procedure cpSetOuput(aCPas: TCPas; aOutput: TCPasOutput); function cpGetOutput(aCPas: TCPas): TCPasOutput; procedure cpSetExe(aCPas: TCPas; aExe: TCPasExe); function cpGetExe(aCPas: TCPas): TCPasExe; function cpAddLibrary(aCPas: TCPas; const aName: WideString): Boolean; function cpAddFile(aCPas: TCPas; const aFilename: WideString): Boolean; function cpCompileString(aCPas: TCPas; const aBuffer: string): Boolean; procedure cpAddSymbol(aCPas: TCPas; const aName: WideString; aValue: Pointer); function cpLoadLibFromFile(aCPas: TCPas; const aFilename: WideString): Boolean; function cpLoadLibFromResource(aCPas: TCPas; const aResName: WideString): Boolean; function cpLoadLibFromStream(aCPas: TCPas; aStream: TStream): Boolean; function cpSaveOutputFile(aCPas: TCPas; const aFilename: WideString): Boolean; function cpRelocate(aCPas: TCPas): Boolean; function cpRun(aCPas: TCPas): Boolean; function cpGetSymbol(aCPas: TCPas; const aName: WideString): Pointer; { Stats } procedure cpStartStats(aCPas: TCPas); function cpEndStats(aCPas: TCPas; aShow: Boolean): WideString; If you want CPas to be statically bound to your application, enable the {$CPAS_STATIC} define in the CPas unit. How to use A minimal implementation example: uses System.SysUtils, CPas; var c: TCPas; // CPas error handler procedure ErrorHandler(aSender: Pointer; const aMsg: WideString); begin WriteLn(aMsg); end; begin // create a CPas instance c := cpNew; try // setup the error handler cpSetErrorHandler(c, nil, ErrorHandler); // add source file cpAddFile(cp, 'test1.c'); // link and call main cpRun(cp); finally // destroy CPas instance cpFree(c); end; end. Compatibility These are some libraries that I've tested. If you have tried more, let me know and I can add them to the list. miniaudio (https://github.com/mackron/miniaudio) raylib (https://github.com/raysan5/raylib) sfml (https://github.com/SFML/CSFML) stb_image (https://github.com/nothings/stb) stb_image_write (https://github.com/nothings/stb) stb_truetype (https://github.com/nothings/stb) stb_vorbis (https://github.com/nothings/stb) Media ❤ Made in Delphi
  25. I have to combine these two codes, the first is for sending messages and the second for sending files: procedure TForm1.serverExecute(AThread: TIdContext); var clients:tlist; i:integer; messaggioprelevato:string; begin messaggioprelevato:=AThread.Connection.IOHandler.ReadLn; showmessage (messaggioprelevato); clients := Server.Contexts.LockList;; try for i:=0 to connessi-1 do try TIdContext(clients.Items[i]).Connection.IOHandler.WriteLn(messaggioprelevato); except end; finally end; Server.Contexts.UnlockList; end; procedure TForm1.ServerExecute(AContext: TIdContext); var FileName: string; TFSFileIn: TFileStream; begin TThread.Synchronize(nil, procedure begin Zilename := 'C:'; end); TFSFileIn := TFileStream.Create(FileName, fmCreate); try AContext.Connection.IOHandler.ReadStream(TFSFileIn); finally TFSFileIn.Free; end; end;