

Jud
Members-
Content Count
147 -
Joined
-
Last visited
Everything posted by Jud
-
Delphi 10.4.2 Right Click over a word -> Find Declaration, Not working.
Jud replied to Juan C.Cilleruelo's topic in Delphi IDE and APIs
And I can't log in to the quality website. It won't take the password I think I used and it doesn't give me the option of resetting it. It says " If you think this message is wrong, please contact your JIRA administrators. " but I have no idea what JIRA is.- 45 replies
-
- 10.4.2
- find declaration
-
(and 1 more)
Tagged with:
-
Delphi 10.4.2 Right Click over a word -> Find Declaration, Not working.
Jud replied to Juan C.Cilleruelo's topic in Delphi IDE and APIs
For me, it comes and goes. Today it is working again. When I had the problem I tried rebooting, etc, and nothing I did fixed the problem. It just started working again. Also, I got 10.4.2 shortly after it came out, and putting the cursor over a variable to see its contents wasn't working, although ctrl-F7 was. But yesterday it started working.- 45 replies
-
- 10.4.2
- find declaration
-
(and 1 more)
Tagged with:
-
Delphi 10.4.2 Right Click over a word -> Find Declaration, Not working.
Jud replied to Juan C.Cilleruelo's topic in Delphi IDE and APIs
I've had problems with it, off and on, for the last few versions. Seems like sometimes a build would fix it. Sometimes going to another project and back would fix it. But tonight it stopped working for me completely and nothing I tried (including deleting the DSK file) would fix it.- 45 replies
-
- 10.4.2
- find declaration
-
(and 1 more)
Tagged with:
-
I've written several multi-threaded programs with the parallel library, usually using tasks but one or two using parallel for. I have a new one that is more natural for parallel for. The problem is that this is the first one that must use recursion. Inside the loop there is some initial stuff and then it calls a procedure that calls itself, and that isn't working. If the parallel loop only has one iteration, e.g. parallel.for(1,1 ... ) or parallel.for(2,2 ... ), it works. But for actual work, with the recursion and parallel.for, it locks up. How can I get a recursive procedure to work in a multi-threaded program?
-
Follow-up. When I put a recursive Fibonacci function in the parallel.for and ran it on various inputs, it worked. When I called a recursive procedure to do Depth First Search (DFS) on a graph, it would not work if it was doing more than one in parallel. But then I made a small procedure to start the recursive calls to the DFS procedure and put that small procedure inside the parallel.for instead of the actual call to the DFS procedure, it works! Just in case someone asks about this.
-
Well, now it is working.
-
It is nothing like Fibonacci. It is a depth-first search on a graph. I'm not trying to make the recursion itself recursive - each time through the loop makes an independent call to the recursive procedure. The instances of the procedure don't have anything to do with each other and there is no global data. That is, I need to make parallel calls to the procedure; the recursion itself is not parallel.
-
The main things I work on are multi-threaded on the 64-bit platform. When I first got Delphi 10.4, I had problems in the IDE: 1. Refactor/rename would not work - it would change only the one at the cursor and none of the others. 2. Find Declaration would not work. 3. Worst of all, after a break, I could not examine variables. Putting the cursor over the variable didn't work. Local variables aren't shown in their window. I had to go back to 10.3. When I got 10.4.1 (about 2 days after release), the problems were gone - until yesterday. Now they are all back. Also, before I think Ctrl-F7 would work to examine a variable, but now it doesn't work. It says "E2003 undeclared identifier". (When debugging, I have {$O-} to make sure it doesn't optimize away any variables.) One thing about my program is that I have a compiler directive to use or not use multi-threading. (I can also set the number of threads from 1 to the number of virtual cores.) I found that if I use the compiler directive to turn off the multi-threading, it doesn't have the problems. If I turn multi-threading back on, the problems are back. I haven't been able to find a solution. Does anyone know how to fix this? ADDED: I went back to an earlier project. and it didn't have the problems. Then I went back to the project with the problems, and it still has them. ALSO: I since it is specific to the project, I deleted the DSK file. Find Declaration works and examining global variables works, but not local variables.
-
No solution. If I remember correctly, 10.3 didn't have the problem. 10.4 had the problem but then 10.4.1 fixed the problem. But then there were two patches to 10.4.1 that still had the problem. I got 10.4.2 about 3 days ago, and Find Declaration has been working for me. But Refactor/Rename doesn't work (and is worse). Before Refactor/Rename would change the one where you have the cursor, but no others. Now it doesn't even change the one at the cursor.
-
10.4.2 Released today - available to download
Jud replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
Thanks, I got it. I read that 10.4.2 retains your old settings. I also read that it requires a complete uninstall, and it defaults to saving your settings. So I did an uninstall first, but it didn't retain my settings. -
10.4.2 Released today - available to download
Jud replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
Where can I download it? I'm a user of 10.4.1 and I had problems downloading the free trial. -
I'm getting an integer overflow error when writing more than about 2^30 characters in a tStringList using SaveToFile in 64-bit Delphi 10.4.1. What I think is happening is that it is using two bytes per character and this is putting some number over 2^31 and overflowing an integer. Is this one of the things that they haven't made 64-bit yet? If there are under about 1 billion characters, it works. If there are more, it crashes. When running the EXE file, it just stops running with no message. In the IDE, it takes you to: procedure _IntOver; {$IFDEF PUREPASCAL} begin ErrorAt(Byte(reIntOverflow), ReturnAddress); end; in the system unit. Which brings up another of my pet peeves: 64-bit Delphi has never handled integer overflows properly. A sample program is attached. SampleProgram.txt
-
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
So "it isn't a bug - it is a feature"? That 2GB limit comes up in other places too. If it is a design choice, they could choose to design it for modern computers. I remember when Stony Brook Pascal went from 16-bit to 32-bit, there were a lot of places where they forgot to change a 16-bit integer to 32 bits. -
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
But that is a limit in Delphi. It could use 64-bit integers and not have that limit. I think this is an oversight in 64-bid Delphi. Dynamic arrays don't have that tiny 2GB limit. -
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
Is this 2GB limit a limitation in Windows (even 64-bit)?? -
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
Thank you. yes, as far as I can tell, the total number of bytes has to be less than 2^31. There are several places where they have not converted to 64-bit integers where they should. Files are bigger now and memories are bigger now. -
In Delphi 10.4.1, the following does NOT set Step to 2. Am I missing something? {$DEFINE test2 } ... Step := 0; {$IFDEF test1} Step := 1; {$ELSEIF test2} Step := 2; {$ENDIF}
-
OK, ELSEIF is NOT an ELSE IFDEF.
-
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
Yes, but it isn't as neat or easy as being able to use tStringList.SaveToFile for its intended purpose. I think it is clear that there is a variable in there somewhere that is to hold the number of bytes and it is an integer instead of an int64. -
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
That is a work-around, or using streams with a block size that is small enough to not cause problems. -
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
EditPad Pro can open files bigger than 4GB. -
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
In my development system I have 32GB and an i7. There are 13 computers here, and their memory ranges from 32GB to 512GB. Yes, you get the out of memory error in 32-bit mode, which is why I have to use 64-bit mode. The integer overflow occurs in 64-bit mode when using tStrings.SaveToFile method. The tStringList help page says that tStringList can hold up to 2,147,483,647 strings. But if you have even 1,200,000,000 strings with even one character per sting, you will get the integer overflow error when trying to use the SaveToFile method. And it isn't because of Windows limit on file size, which is much larger. -
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
-
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
Not for me. I have never gotten the integer overflow error when compiling in 64-bit mode, and this goes back to the first version with 64-bit platform. -
Integer overflow in tStringList.SaveToFile
Jud replied to Jud's topic in RTL and Delphi Object Pascal
But with the 64-bit platform, why not increase it (use NativeInt). Most computers these days have more than 4GB in them and hard drives 4TB and larger, with large files, are common.