Jump to content

Attila Kovacs

Members
  • Content Count

    2071
  • Joined

  • Last visited

  • Days Won

    29

Everything posted by Attila Kovacs

  1. Attila Kovacs

    Anybody up for an ethics question?

    if you don't have "Plan B", you should not try to catch exceptions
  2. Attila Kovacs

    How do you organize developing new features in big projects?

    And you can fire up a new project having everything needed in just seconds. Regardless if for testing/new feature/completely new app etc...
  3. Attila Kovacs

    How do you organize developing new features in big projects?

    Turn this to an advantage. It will pay off.
  4. I've got tired restarting the IDE because of the recurring AV when I was adding a new unit/form etc.. to the current project. Looks like it was fixed in 10.3 https://quality.embarcadero.com/browse/RSP-15471 I don't know, because I'm still on 10.1 U2, and there will be never an official patch for that. The problem is crystal clear: 2203A97A E861C7E6FF call $21ea70e0 ; FindTopEditView 2203A97F 8B4044 mov eax,[eax+$44] not checking against "nil" in EAX. (Why this returning nil after an amount of time is a different question and it's not something we could ever fix in the binaries) the fix is almost as easy as spotting the problem, detouring the call, and do some check: procedure PatchStructuralHighlighterCode; asm call FindTopEditView TEST EAX, EAX JNE @ok call PErrorProc // debug logging jmp ReturnNil @ok: jmp Return end; Now, @FindTopEditView, @ReturnNil and @Return are version specific values, obviously, I have the addresses only for my IDE version. As I don't feel the urge for maintaining and supporting fixes for Delphi but I would share the details if anybody is interested.
  5. Attila Kovacs

    Patch 2 for RAD Studio 10.4 now available

    The Oracle: What’s really going to bake your noodle later on is, would you still have broken it if I hadn’t said anything.
  6. Attila Kovacs

    ctrl+b on the welcome page

    I'm wondering if you are also getting a big fat AV for ctrl-b on the welcome page if parnassus is installed. 10.1U2
  7. Attila Kovacs

    Help with string extraction function

    @Mike Torrettinni And the same code can perform differently on different CPU's. Because the "integer iterator" does nothing else just calculates the pointer + i over and over. So basically it's a shortcut.
  8. Attila Kovacs

    Help with string extraction function

    @Stefan Glienke thx, updated. Strange, with 10.1U2 it's definitely much faster if not storing it. O+ W- asm: ec4.txt
  9. Attila Kovacs

    Help with string extraction function

    Slightly modified Stefan's beautiful routine. If I did not screw it up, it's faster because of comparing against the stack (parameters aChar1, aChar2), (I can't explain that), and omitting "sr" leaves more register for the compiler, which was a speed boost again. Also, the initial "while" became a "repeat until", and instead of "P^ = #0" there is a " P = ep". function ExtractContent4(const S: string; const aChar1, aChar2: Char): string; var P, ep, r: PChar; len: integer; begin len := S.Length; if len = 0 then exit(S); SetLength(Result, len); r := Pointer(Result); P := Pointer(S); ep := P + len; repeat r^ := P^; if P^ = aChar1 then begin repeat inc(P); until (P^ = aChar2) or (P = ep); end else inc(r); inc(P); until P > ep; SetLength(Result, r - Pointer(Result)); end;
  10. Attila Kovacs

    Help with string extraction function

    no-no, the compiler runs out of registers if do so, always testing separately Nice routine. I don't know why but if you use parameters instead if consts it performs even better. (Despite comparing against the stack) ExtractContent(const S: string; const aChar1, aChar2: Char); this boost it even further: var zero: Char; zero := #0; until (P^ = aChar2) or (P^ = zero); or even better: until (P^ = aChar2) or (P = ep);
  11. Attila Kovacs

    Help with string extraction function

    Looking into the Move() implementation, wth is happened to rep movs*? Is it too slow nowadays?
  12. Attila Kovacs

    Help with string extraction function

    You are right, even around the Move() was some string magic. With passing PChar is even faster. As for the result type, I'll let it for Mike to tune it.
  13. Attila Kovacs

    Help with string extraction function

    @Mike Torrettinni Slightly modified, wasn't round everything.
  14. Attila Kovacs

    Help with string extraction function

    Player 3 entered the game (edited) function RemoveTextBetweenChars(const aString: string; const aChar1, aChar2: Char): string; label exit; var c: integer; P, start, res: PChar; begin if aString <> '' then begin SetLength(Result, aString.Length); res := Pointer(Result); P := Pointer(aString); c := 0; while True do begin start := P; while P^ <> aChar1 do begin inc(P); if P^ = #0 then begin Move(start^, res[c], (P - start) * SizeOf(Char)); inc(c, P - start); goto exit; end; end; Move(start^, res[c], (P - start) * SizeOf(Char)); inc(c, P - start); while P^ <> aChar2 do begin inc(P); if P^ = #0 then goto exit; end; inc(P); if P^ = #0 then goto exit; end; exit: SetLength(Result, c); end; end;
  15. Attila Kovacs

    Are we just "Cash Cows"?

    they are busy with bumping Delphi 7 licences
  16. Attila Kovacs

    how to send byte array with TWSocketClient

    Move( PFirmWare(FXmodemFile.Items[Line])^.buffer, buffer[0], Length(PFirmWare(FXmodemFile.Items[Line])^.buffer) );
  17. Attila Kovacs

    Centered message?

    No, this is the good thing 😉 I've a batch file for building the release versions.
  18. Attila Kovacs

    ctrl+b on the welcome page

    @limelect thx for confirming. It was acquired by emba, It's in getit, so there will be no new releases for older IDE's.
  19. Attila Kovacs

    How to increase the distance between TCheckBox glyph and caption text?

    All good. It was in my comment that this is only for static text, and if you would argue then you should have asked what if somebody want 2.5 x space distance 😉
  20. Attila Kovacs

    How to increase the distance between TCheckBox glyph and caption text?

    btw. how did you separate the words back in the high school?
  21. Attila Kovacs

    How to increase the distance between TCheckBox glyph and caption text?

    of course does it work, just set the font size to 2. what is your problem?
  22. Attila Kovacs

    How to increase the distance between TCheckBox glyph and caption text?

    Only if the text is dynamic or multilang. So in 99.99% the cases could work. Caption = ' Unga'#13#10' Bunga' WordWrap = True
  23. Attila Kovacs

    Ctrl Tab Ide Plugin

    I installed from the sources, I never install binaries. I don't even have a Delphi like those precompiled versions. I don't even get it why are they different, nevermind.
×