Skip to main content

Querying GitHub Issues from Google App Script

I'm currently exploring different integrations that can be done between Google App Script and Git. This is part of a bigger attempt to integrate Git data into my project management system. I'll post more on that later. GitHub supports a number of very nice sub-systems. One of them is the GitHub Issues ticket tracking system. It's fairly robust and comes with GitHub - which means it's highly integrated out-of-the-box. Integration with Google's App Script is done via the fetchURL command and JSON object manipulation.  After a good bit of experimentation, I've settled on querying GitHub Issues with an "on open spreadsheet event" to avoid issues with Google's quota system. Essentially, Google prevents you from calling the fetchURL command more than X times (see the quota limits ) per day. That's not great if you have people actively working and changing data in a spreadsheet. Some of my other App Script routines are running thousands of times per d...

D2007 and large text files

Has anyone noticed that Delphi 2007 cannot append to a text file over 2GB in size? I freely admit that I had a problem in my code that created log files that large in the first place... but I also don't expect my compiler to blow up when dealing with files of any size.

My first warning was when the append command started throwing I/O Error 131 messages. Error 131 is negative seek. The only way that could be is if CG has a signed int32 it's using for the filesize. When I hit the upper bounds of int32, it just wraps around to a negative number.

In my case, I just fixed the bug and stopped making huge text files. Otherwise, it looks like I'd have to change how the append function works in the System library. Does anyone know if D2009 also has this problem?

Comments

Bruce McGee said…
How are you testing this? I just write well over 2GB to a text file with Delphi 2007 on XP Pro.
Marshall Fryman said…
It's not the creation that appears to be the problem. Create a blank text file and write > 2GB (2147483647) of text to it. Close the file. Now call append on the same file. In my test case, on a W2k3 SP 2 server, it causes an I/O Error 131 every time.
Xepol said…
I assume you are using TextFile instead of a TFileStream. Try switching over if this is the case.
Marshall Fryman said…
TFileStream doesn't have the same capacity as the old append, write, closefile. You would have to always remember to add the CR/LF pair to the Write (or descend something that does). A TStringList has the ability to deal with a text file but then the you'd have to deal with buffering.

The issue isn't that I can't get around it, just that append uses a signed int32 for it's seek.
Bruce McGee said…
@Marshall
You are right. Trying to append the text file after it's already over 2GB gives an error. Doing the same thing with a TFileStream works as expected. You should go with Xepol's suggestion.
Unknown said…
TStringList.SaveToFile and TextFile in large data was very slowly...

for log writes I'm use next code:

var
TF : TFileStream;
...
TF := TFileStream.Create(FName, fmOpenWrite or fmShareDenyNone);

procedure Msg(S : string);
begin
TF.Position := TF.Size;
S := S+CRLF;
TF.Write(PChar(S)^, Length(S));
end;

//-------------

This is share safe code

Copyright 2008-2022, Marshall Fryman