Jump to content

Stano

Members
  • Content Count

    888
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by Stano

  1. No, I have Delphi Professional.
  2. Not for me. The SQL has "0 AS X". The actual field type in DB is Float. Therefore, I always define the MemTable structure for each use. As I was explained, Pointer is passed to CopyDataSet. Field type data is lost. X will be ftInteger. I don't have to deal with performance. These are just a few records / rows.
  3. There was no other option than FDBatchMove. It already works for me. Thanks for the response.
  4. Stano

    Using translations in unit Consts with Delphi 10.4 VCL

    I have the Slovensky.pas file quoted only in * .dpr. I'm not setting anything anywhere. I use TSM. I'm bypassing the OS dialogs. I can't say more about that.
  5. Stano

    Using translations in unit Consts with Delphi 10.4 VCL

    I once found it on the internet. It never disappointed me. unit slovensky; interface implementation uses System.Classes, Vcl.Forms, Vcl.Consts, Vcl.Dialogs; resourcestring SMsgDlgCZWarning = 'Výstraha'; SMsgDlgCZError = 'Chyba'; SMsgDlgCZInformation = 'Informácia'; SMsgDlgCZConfirm = 'Potvrdiť'; // Otázka SMsgDlgCZYes = 'Án&o'; SMsgDlgCZNo = '&Nie'; SMsgDlgCZOK = 'OK'; SMsgDlgCZCancel = 'Zruš'; SMsgDlgCZHelp = 'Nápoveď'; // SMsgDlgCZHelpNone = 'Nápoveď nie je'; // SMsgDlgCZHelpHelp = 'Nápoveď'; SMsgDlgCZAbort = '&Zrušiť'; SMsgDlgCZRetry = 'Opakovať'; SMsgDlgCZIgnore = '&Ignorovať'; SMsgDlgCZAll = '&Všetko'; SMsgDlgCZNoToAll = 'Nie všetkým'; SMsgDlgCZYesToAll = 'Ano všetkýmm'; SMsgDlgCZClose = 'Zavrieť'; const Captions: array[TMsgDlgType] of Pointer = (@SMsgDlgCZWarning, @SMsgDlgCZError, @SMsgDlgCZInformation, @SMsgDlgCZConfirm, nil); ButtonCaptions: array[TMsgDlgBtn] of Pointer = ( @SMsgDlgCZYes, @SMsgDlgCZNo, @SMsgDlgCZOK, @SMsgDlgCZCancel, @SMsgDlgCZAbort, @SMsgDlgCZRetry, @SMsgDlgCZIgnore, @SMsgDlgCZAll, @SMsgDlgCZNoToAll, @SMsgDlgCZYesToAll, @SMsgDlgCZHelp, @SMsgDlgCZClose); {$WARN SYMBOL_PLATFORM OFF} procedure _ChangeCaptions(List: TPointerList; Last: Pointer); const Two = 2; var I, Max: Integer; IsFind: Boolean; begin {$R-} try Max := (Integer(Last)-Integer(List)) div SizeOf(Pointer); IsFind := False; for I := 0 to Max - Two do if (List[I] = @SMsgDlgWarning) and (List[I + Two] = @SMsgDlgInformation) then begin IsFind := True; break; end; if IsFind then Move(Captions, List[I], SizeOf(Captions)); IsFind := False; for I := I to Max - Two do if (List[I] = @SMsgDlgYes) and (List[I + Two] = @SMsgDlgOK) then begin IsFind := True; break; end; if IsFind then Move(ButtonCaptions, List[I], SizeOf(ButtonCaptions)); finally {$R+} end; end; initialization // _ChangeCaptions(@DebugHook, @Application); end.
  6. Stano

    Parnassus Bookmarks for Delphi 11 Alexandria?

    11.1. it's november 1? In this case, it does not look like this for the foreseeable future Thanks!
  7. Stano

    Anyone here on CnPack forums?

    I hope they fix it.
  8. Stano

    Anyone here on CnPack forums?

    This forum works weird. I had exactly the same problem. I wrote in support. They fixed the problem. I reported a problem with cleaning uses. They don't respond. I wasn't alone. Here you have an email at Liu Xiao liuxiao@cnpack.org
  9. It happens to me too. In that case, I run the build. I have small projects. Suddenly everything is fine. Up to two I don't know if this is your case either.
  10. Stano

    SQLite truncating values?

    For me, a layman, yes. The argument was made: why do you want to solve something that other DBs have solved? That decided.
  11. Stano

    SQLite truncating values?

    I do not know and do not use SQLite. I know one thing. All values are always stored in the DB as string / VarChar. Remember that and look for a mistake here. Defining the field type is only to make your work easier. As far as I know, this will not ensure that you write incorrect data to table. When I found SQLite and found how complicated it was to work with dates, I quickly rejected it.
  12. So use that AbsoluteIndex.
  13. You can also use the internal order numbering. Although not highly recommended. AbsoluteIndex.
  14. I personally always use amInsertBefore. The user quickly finds out and arranges accordingly. Of course, the problem is when the row has to go to the end. Then he must move two rows. Sender.MoveTo(Sender.FocusedNode, Sender.DropTargetNode, amInsertBefore, False);
  15. Stano

    Magic numbers (1)

    begin ... const MaxInfo = 3; var FInfo: AnsiString; for var I := 0 to MaxInfo do It bothers a little.
  16. Stano

    Magic numbers (1)

    Great.
  17. Stano

    Printing in Dark Mode????

    I use two ways: Text - I will copy it to another application. Text editor, Excel, Word ... The reason for Word is the fact that I have a line length of 120 characters. This will fit in one line in Word. When I copy a block, I lose the line numbering. That usually doesn't matter Screenshot - I will edit the given image (negative). I'm not used to printing from the IDE. It kind of doesn't suit me.
  18. Stano

    Got to last page of forum item ?

    I agree and join
  19. Stano

    Loss of Datasouce??

    I think of only one possibility. The DataSource has been physically deleted or relocated. Which is basically the same.
  20. Stano

    Move a Function or Procedure to a Unit??

    I do not agree. The reasons were written by Anders Meland. Read them a few times. This section is not designed correctly. SendAPMsg.SQL.Text := 'select s.*, j.JobNo, j.CustomerRef, j.ConsumerName, j.ConsumerPhoneNo, j.ConsumerEmail, j.Manufacturer, j.Model, j.ESN, j.ConsumerName, c.Name,'; SendAPMsg.SQL.Text := SendAPMsg.SQL.Text + 'c.ContactName, c.ServiceEmail, c.ServiceEmailName, c.CCEmailAddress, c.SvcContactName from APJobTickets s, JobTickets j, Company c'; SendAPMsg.SQL.Text := SendAPMsg.SQL.Text + 'where (j.buscode = :BusCode) and (j.JobNo = s.JobNo) and (c.BusCode = j.BusCode) and ((Current_Date - Cast(s.DateSent as Date)) >= :iAPUpdateDays) and (Trim(BOTH '' '' from j.ConsumerEmail) <> '''')'; SendAPMsg.SQL.Text := SendAPMsg.SQL.Text + 'order by s.JobNo'; Be aware that after each event SendAPMsg.SQL.Text := SendAPMsg.SQL.Text + something the correctness of SQL.Text is always evaluated. Compose the Text correctly first and assign it entirely to SendAPMsg.SQL.Text. If you do it right, the whole SQL.Text will be nicely readable. Now it's a cluster of some letters. Remember to have the right line length. They must be fully visible. I have 120 characters
  21. I have it this way (only for VCL). In the manner of Attila Kovacs. I only hide the main form by placing it off the screen. procedure NewForm(ATypeForms: TTypeForm); const Position = 200; var BasalFormClass: TBasalFormClass; LeftMainForm, TopMainForm: Integer; BasFrm: TBasalForm; begin ServeMainForm(LeftMainForm, TopMainForm); BasalFormClass := GetForm(ATypeForms); try BasFrm := BasalFormClass.CreateBasalForm(nil); BasFrm.Position := poDesigned; SupObjJson.ReadForm(BasFrm); BasFrm.ShowModal; finally if (oGlobVar.ActualForm = Application.MainForm) then begin if (LeftMainForm < 0) then begin LeftMainForm := Position; TopMainForm := Position; Application.MainForm.Left := LeftMainForm; Application.MainForm.Top := TopMainForm; end; end; end; end;
  22. Stano

    Code feedback

    I can't move on with my problem. So I adjusted one unit as part of the relaxation. I used automatic text formatting I inserted blank lines to increase readability I did not deal with unnecessary and missing begin-end pairs I personally use a 120-character line. I didn't apply it here. In Word, it fits on one side. The number of rows has increased, which I do not consider to be a mistake. rumengut.pas
  23. Stano

    Code feedback

    Such a small insignificant thing. Typical for me. I only meant formatting/refactoring published files.
×