Jump to content

Attila Kovacs

Members
  • Content Count

    2063
  • Joined

  • Last visited

  • Days Won

    27

Everything posted by Attila Kovacs

  1. Attila Kovacs

    Keep D2006 vs Sydney aligned

    It's not a problem if you use your own TForm descendant as base. Ofc. it's also a bit work to change everything now. I did it back to the days to handle some HDPI bugs.
  2. Attila Kovacs

    Keep D2006 vs Sydney aligned

    I'm sure there is a mass property modifier in one of the popular experts. Worst case, there is always "sed". 🙂
  3. Is there a mature library for generic (multi)set operations? (Edit: Reading my topic, i meant mathematical sets, maybe I could name it List instead of set, the result what counts) I'd imagine that working like this: unit xyz.sets; interface uses System.Generics.Defaults; type TSets<T> = class public type TSet = class private FValues: TArray<T>; public procedure Add(AValue: T); end; private var FSets: TArray<TSet>; FComparer: IEqualityComparer<T>; public constructor Create; function AddSet: TSet; function GetIntersection(ASets: array of TSet): TArray<T>; property Comparer: IEqualityComparer<T> read FComparer write FComparer; end; implementation uses System.SysUtils; { TSets<T> } function TSets<T>.AddSet: TSet; var l: integer; begin Result := TSet.Create; l := Length(FSets); SetLength(FSets, l + 1); FSets[l] := Result; end; { TSets<T>.TSet } procedure TSets<T>.TSet.Add(AValue: T); var l: integer; begin l := Length(FValues); SetLength(FValues, l + 1); FValues[l] := AValue; end; constructor TSets<T>.Create; begin FComparer := TEqualityComparer<T>.Default; end; // O(n^x) function TSets<T>.GetIntersection(ASets: array of TSet): TArray<T>; var i, j, k, l: integer; begin if FComparer = nil then raise Exception.Create('No comparer defined.'); if Length(ASets) > 1 then begin for i := 0 to High(ASets[0].FValues) do for j := 1 to High(ASets) do for k := 0 to High(ASets[j].FValues) do if FComparer.Equals(ASets[0].FValues[i], ASets[j].FValues[k]) then begin l := Length(Result); SetLength(Result, l + 1); Result[l] := ASets[0].FValues[i]; end; end else Result := ASets[0].FValues; end; end. ------ ✂ ------ ✂ ------ ✂ ------ ✂ ------ ✂ ------ ✂ ------ ✂ ------ ✂ ------ program Project1; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, xyz.sets in 'xyz.sets.pas'; var rp: procedure; i: integer; sets: TSets<string>; set1, set2: TSets<string>.TSet; res: TArray<string>; procedure x; begin ExitProcessProc := rp; ReadLn; end; begin ReportMemoryLeaksOnShutdown := True; rp := ExitProcessProc; ExitProcessProc := x; sets := TSets<string>.Create; set1 := sets.AddSet; set2 := sets.AddSet; try set1.Add('hello'); set1.Add('leo'); set2.Add('hello'); set2.Add('bello'); res := sets.GetIntersection([set1, set2]); for i := 0 to High(res) do WriteLn(res[i]); finally set1.Free; set2.Free; sets.Free; end; end.
  4. Attila Kovacs

    Generic set comparer

    solved, user error.
  5. Attila Kovacs

    Generic set comparer

    LOL <o>, well, now it's revealed! 😉
  6. Attila Kovacs

    Generic set comparer

    @Leif Uneus Wow, thanks a lot, and also to LU RD if he ever reads this.
  7. Attila Kovacs

    Generic set comparer

    Ahm, i was afraid that using the word "set" would be misleading, and I was right, sorry, but lists are a bit different from multisets again, so I don't know, I need to compare two or more "set of anything" and I'm tired writing it always manually.
  8. Attila Kovacs

    DB Blob being converted to Unicode and should not be

    depending on the DAC you are using you could try "Data Type Mapping"
  9. Attila Kovacs

    DB Blob being converted to Unicode and should not be

    I'm not an IB expert but IB BLOB has a default subtype = text. Maybe it was the whole time stored with that subtype but it was fine with ansistrings?
  10. Attila Kovacs

    DB Blob being converted to Unicode and should not be

    What kind of DB and Field type and DAC? Can you read the data fine with the D2007 app?
  11. Attila Kovacs

    DB Blob being converted to Unicode and should not be

    does the blob editor showing it in raw hex? do you read the blob as blobfield and stream or as string?
  12. Attila Kovacs

    Quickly zero all local variables?

    We're approaching levels unseen.
  13. Just press ctrl+shift+v instead of ctrl+v.
  14. Attila Kovacs

    Removing arrows from TRzTrackBar thumb cursor

    add this to your unit or add it to a unit which you include everywhere after "RzTrkBar" in the uses list. interface type TRzTrackBar = class(RzTrkBar.TRzTrackBar) private procedure WMSetCursor(var Msg: TWMSetCursor); message wm_SetCursor; end; implementation procedure TRzTrackBar.WMSetCursor(var Msg: TWMSetCursor); begin end;
  15. Attila Kovacs

    Removing arrows from TRzTrackBar thumb cursor

    override the WMSetCursor message for TRzTrackBar
  16. Attila Kovacs

    Transform string into TDateTime

    @Alberto Paganini You need const in the parameter list, also measure with TStopwatch and not with Now(), and try not to use local string variable, like: function JsonStringToDateTime(const Src: string): TDateTime; const ofs = Ord('0'); var pSrc: PChar; Time: TDateTime; begin if Length(Src) < 19 then Exit(gOutOfScopelDate); pSrc := Pointer(Src); if not TryEncodeDate( // ((Ord((pSrc)^) - ofs) * 1000) + ((Ord((pSrc + 1)^) - ofs) * 100) + ((Ord((pSrc + 2)^) - ofs) * 10) + (Ord((pSrc + 3)^) - ofs), // ((Ord((pSrc + 5)^) - ofs) * 10) + (Ord((pSrc + 6)^) - ofs), // ((Ord((pSrc + 8)^) - ofs) * 10) + (Ord((pSrc + 9)^) - ofs), Result) then Exit(gOutOfScopelDate); if not TryEncodeTime( // ((Ord((pSrc + 11)^) - ofs) * 10) + (Ord((pSrc + 12)^) - ofs), // ((Ord((pSrc + 14)^) - ofs) * 10) + (Ord((pSrc + 15)^) - ofs), // ((Ord((pSrc + 17)^) - ofs) * 10) + (Ord((pSrc + 18)^) - ofs), // 0, // Time) then Exit(gOutOfScopelDate); Result := Result + Time; end;
  17. Attila Kovacs

    Visual Control for selecting a date range

    With https://www.delphihtmlcomponents.com/ the sky is the limit. Just an example for selecting year/quartal/month/week/last 4 weeks/last 12 months/5 years (of course, you have to build your own html/css/scripting, but the result is unique)
  18. @Dalija Prasnikar Aeauhm, look like it's UFO Technology for me 😄
  19. Attila Kovacs

    How to crash the ICS web server

    @FPiette not if it's ipv6
  20. @Bill Meyer the combo offer takes me to an only digital purchase page
  21. Attila Kovacs

    Transform string into TDateTime

    @emailx45 Why are you concerned about what value he uses for zero date? There must be a reason for that, for example the REST endpoint he talking to does not accept dates before 1.1.1901. I don't understand your rage nor your comic book.
  22. Attila Kovacs

    Transform string into TDateTime

    Yes, remove "Dummy", and maybe Result := Result + Encodetime()? Also, you are ignoring time zones, but it is not necessary a problem for you.
×