Posted on: March 21st, 2011.
Category:
Plain C
Hi everybody! I didn’t write for such a long time. Last months I don’t have enough free time to work on my favourite spare time projects. I’m publishing a link to the sub2srt GUI application rewritten in plain C using the GTK+ runtime.
Right now the application works on Unix/Linux/*BSD. It won’t be much porting to make it work on Windows which will probably be done in the next version.
Go to gsub2srt project website

Posted on: June 10th, 2010.
Category:
C++
Didn’t write for a long time. Just a quick post to add the new version of my Source code numberings remover…
#ifndef __linux__
#include <conio.h>
#else
#include "getch.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
void RemStartingChars(string &input, bool spacesRemoved)
{
if (!spacesRemoved)
while (input[0] == ' ')
input = input.substr( 1, strlen(input.c_str()) );
char numbers[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
int i = -1;
bool hasMore = false, tmp = false;
while (numbers[++i])
while(tmp = (input[0] == numbers[i]))
{
hasMore = hasMore || tmp;
input = input.substr( 1, strlen(input.c_str()) );
}
if (hasMore)
RemStartingChars(input, true);
}
int main(int argc, char *argv[])
{
cout<<"Source code numberings remover 0.2"<<endl;
cout<<"Written by Iskren Slavov"<<endl;
cout<<"Copyright (C) 2009,2010"<<endl;
cout<<"\nThis computer software must be ";
cout<<"redistributed and edited under the terms of GNU GPLv2. ";
cout<<"For more information about licensing read COPYING file.\n\n";
if (argc > 1)
{
ifstream inFile;
ofstream outFile;
inFile.open(argv[1]);
outFile.open(argv[2]);
if (!inFile)
{
cerr<<"Unable to open file: "<<argv[1]<<endl;
system("PAUSE");
exit(1);
}
string input;
cout<<"=========================\nConverting... ";
while (getline(inFile, input))
{
RemStartingChars(input, false);
outFile<<input<<endl;
}
cout<<"All done!\n========================="<<endl;
outFile.flush();
outFile.close();
inFile.close();
}
else
{
#ifdef __linux__
char * progname = argv[0];
#else
char * progname = strrchr(argv[0], '\\')+1;
#endif
cout<<"================================================================"<<endl;
cout<<"Description: Removes leading numbers from source code."<<endl;
cout<<"Usage: "<<progname<<" <input-file.txt> <output-file.txt>"<<endl;
cout<<"================================================================"<<endl;
cout<<"Press any key to exit . . ."<<endl;
#ifdef __linux__
getchar();
#else
getch();
#endif
}
return 0;
}
Source code numberings remover 0.2
I’ve been very busy lately, so I didn’t have much time to write almost anything.
But these days (around Easter) I bought a WDTV Media Player for my television. And I found that the player didn’t play simple text subtitles (*.sub without *.idx). So I found this little script sub2srt.pl (Thanks Robelix) and I wrote a simple GUI for it in FreePascal so that it should compile on every platform.

I’m releasing the binary of the Win32 version for now. But stay tuned – soon I will be releasing a Win64 (AMD64) version, Linux (X86, AMD64) and MacOS X (Universal binary) versions of the program. And as soon as I’m sure the program works on all platforms I’ll release the the final source code.
Download the 32-bit Windows version of Sub2Srt GUI
Posted on: January 23rd, 2009.
Category:
C++
This is the C++ rewrite of the Numberings remover tool. It compiles with MingW/GCC and any other major C++ compiler under Windows. Under Linux it is tested with GCC only. I think it should work fine on some other Unix-like operating systems but it is not tested. If you test it on some OS other than Linux or Windows you can send me your fixes/suggestions and/or the results of the test.
Here is the source code:
#ifndef __linux__
#include <conio.h>
#else
#include "getch.h"
#endif
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void RemStartingChars(string &input, bool spacesRemoved)
{
if (!spacesRemoved)
while (input[0] == ' ')
input = input.substr( 1, strlen(input.c_str()) );
char numbers[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
int i = -1;
bool hasMore = false, tmp = false;
while (numbers[++i])
while(tmp = (input[0] == numbers[i]))
{
hasMore = hasMore || tmp;
input = input.substr( 1, strlen(input.c_str()) );
}
if (hasMore)
RemStartingChars(input, true);
}
int main(int argc, char *argv[])
{
cout<<"Source code numberings remover (C++ rewrite) 0.1"<<endl;
cout<<"Written by Iskren Slavov"<<endl;
cout<<"Copyright (C) 2009"<<endl;
cout<<"\nThis computer software must be ";
cout<<"redistributed and edited under the terms of GNU GPLv2. ";
cout<<"For more information about licensing read LICENSE.TXT\n\n";
if (argc > 1)
{
ifstream inFile;
ofstream outFile;
inFile.open(argv[1]);
outFile.open(argv[2]);
if (!inFile)
{
cerr<<"Unable to open file: "<<argv[1]<<endl;
system("PAUSE");
exit(1);
}
string input;
cout<<"=========================\nConverting... ";
while (getline(inFile, input))
{
RemStartingChars(input, false);
outFile<<input<<endl;
}
cout<<"All done!\n========================="<<endl;
outFile.flush();
outFile.close();
inFile.close();
}
else
{
#ifdef __linux__
char * progname = argv[0];
#else
char * progname = strrchr(argv[0], '\\')+1;
#endif
cout<<"======================"<<endl;
cout<<"Description: Removes leading numbers from source code."<<endl;
cout<<"Usage: "<<progname<<" <input-file.txt> <output-file.txt>"<<endl;
cout<<"======================"<<endl;
cout<<"Press any key to exit . . ."<<endl;
getch();
}
return 0;
}
Download the full Source Code (C++)
Posted on: January 20th, 2009.
Category:
C#
I’ve been copying a lot of source code from different sites recently. But when I copy the source code it is being pasted with numberings in front of every line.
So I wrote this program to remove all the numbers before each line of source code.
Here’s the nuberings remover source:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace RemFirstNums
{
class Program
{
static void RemStartSymbols(ref String input, bool firstSpacesRemoved)
{
String numbers = "0123456789";
CharEnumerator charEnum = numbers.GetEnumerator();
bool foundMore = false, tmp = false;
if (!firstSpacesRemoved)
while (input.StartsWith(" ") || input.StartsWith("\\s+"))
input = input.Substring(1, input.Length - 1);
while (charEnum.MoveNext())
while (tmp = input.StartsWith(charEnum.Current.ToString()))
{
foundMore = foundMore || tmp;
input = input.Substring(1, input.Length - 1);
}
if (foundMore)
RemStartSymbols(ref input, true);
}
static void Main(String[] args)
{
TextReader TextRead = null;
TextWriter TextWrite = null;
Console.WriteLine("NumberingRemover for C# 0.1");
Console.WriteLine("Written by Iskren Slavov");
Console.WriteLine("Copyright (C) 2009");
Console.Write("\nThis computer software must be ");
Console.Write("redistributed and edited under the terms of GNU GPL v2. ");
Console.Write("For more information about licensing read LICENSE.TXT\n\n");
try
{
if ((args[0].Trim() != null) && (args[1].Trim() != null))
{
String workStr = "";
TextRead = new StreamReader(args[0]);
TextWrite = new StreamWriter(args[1]);
Console.Write("=========================\nConverting... ");
while ((workStr = TextRead.ReadLine()) != null)
{
RemStartSymbols(ref workStr, false);
TextWrite.WriteLine(workStr);
}
Console.WriteLine("All done!\n=========================");
}
TextRead.Close();
TextWrite.Close();
}
catch (IOException ex)
{
Console.Error.WriteLine("{0}", ex.Message);
Console.WriteLine("\nPress any key to exit . . .");
Console.ReadKey();
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("==================");
Console.WriteLine("Description: Removes leading numbers from source code.");
Console.WriteLine("Usage: NumberingRemover.exe <input-file.txt> <output-file.txt>");
Console.WriteLine("==================");
Console.WriteLine("\nPress any key to exit . . .");
Console.ReadKey();
}
}
}
}
Download the source code and binaries (MS Visual C# Express edition project)
I hope this little program will be helpful for you, developers. I’m thinking of a rewrite in C++, so stay tuned…