-
Content Count
1977 -
Joined
-
Last visited
-
Days Won
26
Everything posted by Attila Kovacs
-
FireDAC Add On discountinued? (Good by Embarcadero?)
Attila Kovacs replied to Juan C.Cilleruelo's topic in General Help
@Juan C.Cilleruelo Take a look at UniDAC (or SDAC) and at dbForge Studio for MSSQL, both are excellent tool sand DevArt is a really great partner. I think you will be able to transform your own ORM to use UniDAC. For the case, they also offer ORM's and .NET products. They are also customer oriented and they have a great support. Or, as I always mention, you could also quit your subscription and use the last IDE + FD what you have.- 24 replies
-
- firedac add on
- discountinued
-
(and 1 more)
Tagged with:
-
Anyone who uses FastSpring as the payment processor received their payment for the last month?
Attila Kovacs replied to Edwin Yip's topic in General Help
So did I when I ignored him for the extensive AD for his own product. 😄 For me it's a fake Delphi group. -
Maybe a missing sum? (SELECT SUM((OD.QTY - OD.REMQTY) * OD.UPRICE) FROM ORDETAIL OD WHERE O.ID=OD.ID)
-
your code is just Ahm, I see, virtual mode is like the component is a hole to the memory and the hole is being moved, but the size is always the same.
-
I'm not sure if it's known at any level.
-
I'm wondering if it would be possible to make this dialog more user friendly, like a two stage state, both triggered with ctrl-f12. As default it would pop-up and show the files in the project, and the second ctrl-f12 (at opened list) would show the extended file list. Or, for my sake, duplicate the settings on the second tab for the first and for the second ctrl-f12, so everybody would be served and satisfied. And then ctrl-f12 could just switch between the settings at the opened list.
-
http://google.com/ncr
-
You could try to use the dataset's ".Filter" and ".Filtered" properties instead of this exotic SetRange.
-
A blind man walks into a bar. And a table. And a door. And a staircase.
-
@Lars Fosdal It's the GExperts section 😛 Again 😉 Maybe we need some css tuning on the title 😉
-
That is so easy, a little wizard with 2 menus. Forgive me for the code quality, looks like I did not give too much flamingos about it. // Paste procedure TClipboardWizard.mePasteFromClipboard(Sender: TObject); begin with BorlandIDEServices as IOTAEditorServices do if Assigned(TopView) then begin TopView.Buffer.EditPosition.InsertText(GetFormattedString); TopView.Paint; // invalidation end; end; function TClipboardWizard.GetFormattedString: string; var List: TStringList; q: integer; begin if Clipboard.HasFormat(CF_TEXT) then begin List := TStringList.Create; try List.Text := Clipboard.AsText; for q := 0 to List.Count - 2 do List[q] := #39 + List[q].Trim.Replace(#39, #39#39) + #32#39#43#32#47#47; q := List.Count - 1; List[q] := #39 + List[q].Trim.Replace(#39, #39#39) + #32#39#59#32#47#47; Result := List.Text; finally List.Free; end; end; end; //Copy procedure TClipboardWizard.meCopyToClipboard(Sender: TObject); begin with BorlandIDEServices as IOTAEditorServices do if Assigned(TopView) then Clipboard.AsText := RemoveUnneededChars(TopView.Block.Text); end; function TClipboardWizard.RemoveUnneededChars(const Value: string): string; var List: TStringList; q: integer; begin if Value.Trim <> '' then begin List := TStringList.Create; try List.Text := Value; for q := 0 to List.Count - 1 do List[q] := List[q].Trim([#32, #33, #34, #35, #36, #37, #38, #40, #41, #42, #43, #44, #45, #46, #47, #48, #49, #50, #51, #52, #53, #54, #55, #56, #57, #58, #59, #60, #61, #62, #63, #64, #65, #66, #67, #68, #69, #70, #71, #72, #73, #74, #75, #76, #77, #78, #79, #80, #81, #82, #83, #84, #85, #86, #87, #88, #89, #90, #91, #92, #93, #94, #95, #96, #97, #98, #99, #100, #101, #102, #103, #104, #105, #106, #107, #108, #109, #110, #111, #112, #113, #114, #115, #116, #117, #118, #119, #120, #121, #122, #123, #124, #125, #126, #127]).Replace(#39#39#39, #39#39#32#39).Trim([#39]).Replace(#39#39, #39); Result := List.Text; finally List.Free; end; end else Result := ''; end;
-
I only know one company who refuses to host old version of their products. If he had a license he should contact DevExpress and ask for the package or for declaring it as abandonware.
-
Ask DevExpress?
-
MultiCast NotifyEvents / DatasetNotifyEvents
Attila Kovacs replied to microtronx's topic in Algorithms, Data Structures and Class Design
TEventHandler<T> ? TObservable<T> ? Just my 2 cents, never used them, but it's a good base to start the conversation.- 4 replies
-
- delphi
- multicast events
-
(and 1 more)
Tagged with:
-
Why is public class method marked as used, while it's not actually used?
Attila Kovacs replied to Mike Torrettinni's topic in Algorithms, Data Structures and Class Design
If it's true, is it related to the bloated dcu's with generics reported by Stefan back in the days? -
You could also quit your emba subscription and use the last one you have with FD.
-
https://www.devart.com/unidac/
-
Reading fields with different lenghts
Attila Kovacs replied to AndrewHoward's topic in Delphi IDE and APIs
it's not necessary to move the data anywhere, just cast the memory to the record type TMyData = record bSTX: Byte; bSep1: Byte; Field1: Word; bSep2: Byte; Field2: Array [0 .. 5] of Byte; bSep3: Byte; Field3: Array [0 .. 2] of Byte; Field4: Array [0 .. 4] of Byte; bsep4: Byte; bETX: Byte; bLRC: Byte; end; PMyData = ^TMyData; var DataFromCOM: TBytes; begin SetLength(DataFromCOM, SizeOf(TMyData)); DataFromCOM[2] := 122; WriteLn(PMyData(DataFromCOM).Field1.ToString); ReadLn; end. -
I was tired writing IncludeTrailingURLDelimiter(IncludeTrailingURLDelimiter(dir1)+dir2) ... etc. so I thought I can write a little URL Builder. As I'm a lazy dog, I did not want to go with classes, I wanted something self managed, but to have that I had to solve the auto initialization, so here I'm (see the code) Sure this is not the most resource saver solution, but this wasn't my goal. Any thoughts? Positive, negative, everything welcome, just that we can learn something. lURL := TURLBuilder.AddDir('dir').AddDir('dir2').AddFile('file'); unit URLBuilder; interface type TURLBuilder = class //record private type TURLBuilder = record private FUrl: string; public function AddDir(const ADir: string): TURLBuilder.TURLBuilder; function AddFile(const AFile: string): TURLBuilder.TURLBuilder; class operator Implicit(a: TURLBuilder.TURLBuilder): string; class operator Explicit(a: TURLBuilder.TURLBuilder): string; end; public class function AddDir(const ADir: string): TURLBuilder.TURLBuilder; static; end; function IncludeTrailingURLDelimiter(const AURL: string): string; implementation function IncludeTrailingURLDelimiter(const AURL: string): string; begin Result := AURL; if (AURL <> '') and (AURL[High(AURL)] <> '/') then Result := Result + '/'; end; { TURLBuilder } class function TURLBuilder.AddDir(const ADir: string): TURLBuilder.TURLBuilder; begin Result.FUrl := IncludeTrailingURLDelimiter(ADir); end; { TURLBuilder.TURLBuilder } function TURLBuilder.TURLBuilder.AddDir(const ADir: string): TURLBuilder.TURLBuilder; begin Result.FUrl := FUrl + IncludeTrailingURLDelimiter(ADir); end; function TURLBuilder.TURLBuilder.AddFile(const AFile: string): TURLBuilder.TURLBuilder; begin Result.FUrl := FUrl + AFile; end; class operator TURLBuilder.TURLBuilder.Explicit(a: TURLBuilder.TURLBuilder): string; begin Result := a.FUrl; end; class operator TURLBuilder.TURLBuilder.Implicit(a: TURLBuilder.TURLBuilder): string; begin Result := a.FUrl; end; end.
-
Reading fields with different lenghts
Attila Kovacs replied to AndrewHoward's topic in Delphi IDE and APIs
@AndrewHoward cast the data to a corresponding packed record -
Reading fields with different lenghts
Attila Kovacs replied to AndrewHoward's topic in Delphi IDE and APIs
@Mike Torrettinni Woww. Even if the presented protocol is a binary one? -
Having fun with Delphi
Attila Kovacs replied to Attila Kovacs's topic in Algorithms, Data Structures and Class Design
I don't know, it's URL not a Path, and PathSeparator etc.. are class vars, I would not touch it for a second. ah, it's a record, in this case that's what I did not find. I knew there was something but could not remember what, thx. Edit: I tried TPath.Combine and I can't alter the separator char. Either I'm missing something or it's just for file paths. -
Having fun with Delphi
Attila Kovacs replied to Attila Kovacs's topic in Algorithms, Data Structures and Class Design
@Kas Ob. I went through all these versions in my mind, even with clearing in the class operators, but it's just not right. You also have to know the implementation details for that version. @Marat1961 There is no desire on reinventing the wheel, I would have been pleased if there were something in the RTL. The cited func works with path separators and not url separators, as far as I can see. However the suggestion by @Kryvich to introduce a TURIPart=type string; and add some helpers sounds good. -
Having fun with Delphi
Attila Kovacs replied to Attila Kovacs's topic in Algorithms, Data Structures and Class Design
@Kryvich I'll think about #2, sounds legit. thx -
Having fun with Delphi
Attila Kovacs replied to Attila Kovacs's topic in Algorithms, Data Structures and Class Design
@Kryvich Yes, but It's slightly different from my wishes. Dir1 Dir2 has to be TURL.