Programok

Word dokumentumok összefűzése C# -ban

MergeDoc

Gondoltam egyet, és összedobtam egy programot C# -ban, ami összefűz tetszőleges számú és formátumú word dokumentumot. Nem rég szükségem is lett volna egy ilyenre, de ehelyett egyenként tallóztam be egy új dokumentumból a beillesztendő fájlokat. Lehet, lett volna más megoldás, de már mindegy. A program futtatható exe fájlja és a forráskódja is letölthető a következő linken:



Forráskód és EXE fájl

A program fő része gyakorlatilag a következő:

using System;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;

namespace MergeDoc
{
    public partial class Form1 : Form
    {
        OpenFileDialog ofd = new OpenFileDialog();
        public Form1()
        {
            InitializeComponent();

        }

        private void browseBtn_Click(object sender, EventArgs e)
        {
            ofd.Multiselect = true;
            ofd.Title = "Jelöld ki az összefűzendő dokumentumokat";
            String filter = "Word 93-2007 (*.doc,*.docx)|*.doc; *.docx|Word 97-2003 (*.doc)|*.doc|Word 2007 (*.docx)|*.docx";
            ofd.Filter = filter;
         
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                openedDocs.Items.Clear();
                foreach (String filename in ofd.FileNames)
                {
                    openedDocs.Items.Add(filename);
                }
            }
        }

        private void saveBtn_Click(object sender, EventArgs e)
        {
            Word.ApplicationClass wordApp = new Word.ApplicationClass();
            object visible = false;
            object doctype = Word.WdNewDocumentType.wdNewBlankDocument;
            object docformat = Word.WdOriginalFormat.wdOriginalDocumentFormat;
            object missing = System.Reflection.Missing.Value;

            Word.Document outdoc = wordApp.Documents.Add(missing, missing, doctype, visible);
            foreach (String filename in openedDocs.Items)
            {
                object file = filename;
                try
                {
                    outdoc.ActiveWindow.Selection.InsertFile(filename);
                }
                catch (System.Runtime.InteropServices.COMException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            try
            {
                wordApp.Documents.Close();
            }
            catch (System.Runtime.InteropServices.COMException)
            {

            }
            finally
            {
                wordApp.Quit();
            }
        }

    }
}

Én nem állítom, hogy tökéletes, de a célnak megfelelt. Egy nap majd talán írok jobbat. Addig is akit érdekel, használja kedvére.

Tesztelve Microsoft Office 2007 mellett lett Windows 7 rendszerben.
A project Visual Studio 2010 -ben készült de .NET 3.5 verzióra állítva.

Megosztás/Mentés

MASM lemezszektor olvasó lapozható tartalommal

Előkép

A következő program beolvas egy (Floppy)lemezről egy (512 byte-os) szektort. Lényegében egy házi feladat volt az egyetemen, hogy csinosítsuk ki keretekkel, esetleg menükkel a programot, ami már előre meg volt írva. Ezen célon túllőve nem csak a kimenetet csinosítottam, hanem a forráskódot is. Jóllehet, túl is bonyolítottam.

Az igazsághoz hozzá tartozik, hogy a program csak floppy lemezről tud beolvasni. 3 féle megoldást próbáltam ki a lemezszektor olvasásra, de némi utánajárás után kiderült, hogy vagy az oprendszer nem támogatja a módszert, vagy a fájlrendszer. Nem beszélve arról, hogy egy virtuális FAT12 -es merevlemezt sem tudtam olvasni, tehát maradt konkrétan a virtuális floppy csatolás virtualboxban egy virtuális XP-vel. Floppy képet egyébként készen is lehet letölteni a neten.



Adatbekérés

Kiírás

Megosztás/Mentés

Meghívós loginrendszer - R.E. Login v2.0

R.E. Login v2.0

Az R.E. Login újabb verziója, vadi új objektum orientált motorral. Megőrizve az elődje funkcióit, de némileg kibővítve azt, és lehetőséget biztosítva további fejlesztések egyszerűbb elvégzésére. Ebből kifolyólag valószínű lesz is folytatás. Addig is köszöntsük szeretettel új barátunkat, az R.E. Login v2.0 -át.
R.E. Login v2.0.3 letöltése
Kövesd a projektet és keresd a legfrissebb verziókat a:
https://sourceforge.net/projects/relogin/ oldalon.


Figyelem: Ez a rendszer már elavult. Hibákat tartalmazhat és az új PHP verziókkal nem teljesen kompatibilis. Az init.php-be beillesztve az alább írt sorok egyikét a hibaüzenetek eltüntethetők, de a login használata csak saját felelősségre javasolt.

error_reporting(E_ALL | E_STRICT); // E_STRICT hibaüzenetek elrejtése
vagy
error_reporting(0); //minden hibaüzenet elrejtése

Kapcsolódó oldalak

Szerkesztve: 2010.04.04. 23:02
A loginban sikerült felfedezni pár hibát. Ezek javítva lettek. A hibák a következők voltak:

  • Profil módosítás fájl kimaradt a beállításokból, így csak changeprofile.php néven működött
  • Ugyanezen okból adminnak más profiljában is a saját profiljára mutató link volt.
  • Apró elírás a telepítőben. STMP volt SMTP helyett az egyik megjegyzésben
  • A telepítő nem ellenőrizte, hogy az SMTP host és port meg van-e adva. Sem az e-mail címeket.

Továbbá egy kiegészítés:

  • Most már opcionális az SMTP használat is. ha netán valakinek nem lenne semmilyen SMTP szerver használatára lehetősége, akkor SMTP nélkül küldi a leveleket.

Más nem változott. Ha bárki hibát észlel, kérem szóljon.
Köszönet tbence-nek az észrevételeiért és hibajelentésért.

A Login funkciói nagy vonalakban:

  • Regisztráció ( Opcionális meghívó mód, regisztráció blokkolása )
  • Beléptetés
  • Meghívó küldés
  • Privát üzenet küldés ( Kimenő, bejövő postafiók, Hír küldés )
  • Felhasználói profil
  • Gravatar és MKAvatar használat
  • Admin felület ( Tulajdonos és Admin rangot megkülönböztetve )
  • Bővíthető ranglista
  • Felhasználó lista
  • Online lista
  • Felhasználó keresése usernév szerint
  • Elfelejtett jelszó funkció

Megosztás/Mentés

Perzisztens PHP objektumok - R.E. DBObjects v2.1

Ez az osztálykönyvtár perzisztens megvalósítását teszi lehetővé PHP osztályoknak. Ezen kívül tartalmazza az R.E. Pagination néhány funkcióját, hogy a perzisztens objektumokat tartalmazó listát is lehessen inicializálni oldalanként.

R.E. DBObjects letöltése
Dokumentáció letöltése
Dokumentáció megtekintése

Előnyei

  • Frissítésnél és törlésnél nincs szükség sql kódok írására.

  • Az egyes adatbázis mezők objektum tulajdonságként kezelhetők. Így akár osztályon belül módosítható is az elérésük __get __set metódusokkal.

  • Egyedi metódusok definiálhatók a jellemzők kezelésére.

  • A kódolás egyszerűbb, gyorsabb, átláthatóbb.

Hátrányai

  • Összetett kulcsokat még nem tud kezelni.

  • Minden táblának tartalmaznia kell auto_increment elsődleges kulcsot.

  • A frissítés, törlés, lekérdezés valamivel lassabb lehet. Ez nyilvánvalóan adódik az előnyök megvalósításának idejéből.

  • Még nem képes több adatbázis kapcsolat egyidejű kezelésére

Példa a használatára:

<?php
//Ennek az osztálynak includeolása szükséges egyedül.
require_once 'REDBObjects/REDBObjects.class.php';
//Az összes mysql modult betölti a könyvtárból.
REDBObjects::uses('mysql');

mysql_connect('localhost', 'root', 'password');
mysql_select_db('teszt');

$list = new IsMySQLListClass(array(
        'teszt'=>array('*')
));
$list->tableName_signal = 'T_'; //Ez az alapértelmezett is
$list->table_field_sep = '__'; //Az alapértelmezett az egy darab _ jel
//sql kód FROM utáni részét kell megadni limit nélkül.
//Plusz hogy hány rekordot kérdezzen le egy oldalra
$list->page("teszt where field like 'A%'", 10);
foreach ($list as $key => $object)
{
        print $object->T_teszt__id.', '.$object->field.'<br />'.PHP_EOL;
        if ($object->id == 2)
        {
                //Frissíti a field tulajdonság értékét.
                $object->field = 'P';
                $object->update();
        }
}
?>

Megosztás/Mentés

PHP ellenőrzőkód - R.E. Captcha v1.0

Captcha kép 1

Captcha kép 2

Újabb taggal bővült az "R.E. termékcsalád", (R.E. mint RimElek) mert hogy már szinte védjegyem. Ezúttal egy Captcha PHP osztály személyében. Itt bal oldalt található is két példa kép. Mint látható, az egyiken egy matematikai műveletet kell elvégezni, a másikon pedig csak felismerni a véletlenszerűen megjelenített karaktersorozatot. Mindkét esetben megzavarva a képet a szintén véletlenszerűen generálható vonalakkal.


R.E. Captcha v1.0 letöltése
R.E. Captcha v1.0.1 letöltése
Dokumentáció letöltése
Dokumentáció online megtekintése

A fent említett két mód között már mondanom sem kell, hogy hogyan vált a program. Természetesen véletlenszerűen. Persze nem csak fix betűtípussal használható. Tetszés szerint megadható bármilyen ttf betűtípus fájl. Állítható a betűméret, a kép méret és a kép típusa is. ( jpg, png, gif ) Ezen kívül a háttérszín is, bár leginkább világos háttérszín mellett mutat jól tapasztalataim szerint. Még érdekesség, hogy mivel gyakran fordultak hozzám oylan kérdéssel, hogy egy PHP-val generált képet hogyan lehet megjeleníteni egy html fájlban, így két megjelenítési lehetőséget is beépítettem.

Megosztás/Mentés

PHP grafika - R.E. PHP Graph v1.0

Törpi a sztár

Ez a program egy PHP grafikus osztálykönyvtár próbálna lenni. És úgy néz ki, hogy eddig sikerült is neki. némely részei 2 éve porosodnak a gépemen, és most gondoltam úgy, hogy eljött az ideje ezen változtatni.
Letöltés: R.E. PHP Graph v1.0
Dokumentáció letöltése
Dokumentáció online megtekintése
Példa képek


Tudnivalók:
A dokumentációban nagyjából minden le van írva. De azért nagy vonalakban miről is van szó. A Graph.class.php-t kell beilleszteni a programba elsőként. Majd létre kell hozni egy grafika objektumot, amire rá lehet pakolni egyéb objektumokat:

<?php
require_once 'rephpgraph/Graph.class.php';
$graph = new Graph(150,150);
$graph->type = 'png';
$graph->transparent = true;
?>

A szélességet és a magasságot kell csak megadni. Valamint megadható a kép típusa, és hogy legyen-e áttetsző a háttérszín. Ha szükség van objektumokra, akkor azt importálni kell a Graph osztály statikus importObject() metódusával. Ha paraméter nélkül hívjuk, akkor minden objektumot importál (Azaz osztályt). Ha stringet kap, akkor az osztály nevét kéri csak. Ha tömböt kap, akkor a tömbben kapja az osztályok neveit.
Az importIterator() ugyanezen elven működik. Csak iterátorokat importál.

Ezek után létre lehet hozni egy tetszőleges objektumot. És a $graph objektum add metódusával hozzá adható a képhez.

<?php
require_once 'rephpgraph/Graph.class.php';
$graph = new Graph(150,150);
$graph->type = 'png';
$graph->transparent = true;

$ora = new AnalogClock(74,mktime(7,10,30));
$ora->x = $graph->width-$ora->width/2;  //óra középpontjának koordinátái a képen
$ora->y = $graph->height-$ora->height/2;
$ora->background = $ora->createColor(0,0,130);
$ora->transparent = true;

$graph->add($ora); //óra felvétele  aképre

$graph->flush(); //kép megjelenítése

?>

A $graph objektum flush() metódusa küldi ki a képet a kimenetre. De lehetőség van lementeni is a képet a

<?php
$graph->save('fajlneve.png');
?>

metódushívással, vagy akár letöltésre kiküldeni a böngészőnek:

<?php
$graph->saveClient('fajlneve.png');
?>

Ennek kimenete:

Analóg óra
Természetesen az óra nem csak statikus időt tartalmazhat, hanem mindig az aktuális időt is.
Terveim közt szerepel még több objektum megírása, de egyelőre sok más elfoglaltság mellett halasztom a dolgot.

Megosztás/Mentés

Meghívós loginrendszer - R.E. login 1.8.1

R.E. Login 1.8.1

Egy csaknem 4 éves általam írt PHP loginrendszerről van szó, ami elég sok apró hibát tartalmazott. Most volt időm javítani ezeket a hibákat és 1.8.1 -es verziószámmal közzé is teszem.
Letöltés: R.E. Login v1.8.1
Képernyőképek

Megosztás/Mentés

PHP tortadiagram kezelő v1.1

Tortadiagram

Ez a php program Különböző adatok egymáshoz viszonyított arányát ábrázolja tortadiagramon.
Használatához mysql adatbázisra van szükség. Az adatbázis kapcsolódáshoz szükséges adatokat a config.php-ben lehet beállítani. Az 1.0 verzióhoz képest nem változott semmi, csak hibajavítások történtek. 4 éve még nem figyeltem az apróságokra annyira. Illetve beépítettem egy kijelentkezést is.
Letöltés: Tortadiagram kezelő v1.1


Telepítése
Ha a config.php-t beállítottad, másold fel a fájlokat a szerverre, és nyisd meg az index.php-t. Ekkor a telepítés megtörténik, és az sql.sql fájlt törli a program.
Ha az adatok helyesek a config.php-ben, de mégsem sikerül a telepítés, lehet, hogy már létezik a diagram tábla az adatbázisban. Ekkor ezt törölni kell és újra próbálkozni.

Adminisztráció
Mindent az admin.php oldalon tudsz beállítani. Nyisd meg ezt a szerveren böngészőből, és kezdd el felvenni az adatokat. Beállíthatod milyen színnel jelenjen meg a diagramon bármelyik adat. Törölhetsz és módosíthatsz. Jelszó szükséges. Alapértelmezetten: "password". De ezt is beállíthatod a config.php-ben.

Használata
Ahol a diagramot a mellette található színmagyarázatokkal megjelenítenéd, használd a következő php kódot:

<?php include('tortadiagram/inc.php'); ?>

Ahol feltételeztem, hogy diagram fájljait a tortadiagram mappában lehet megtalálni.
Ha csak a tortadiagramra van szükség, akkor a következő html kód használható:
<img src="tortadiagram/diagram.php" alt="diagram" />

Képernyőképek

Megosztás/Mentés

Webes fájlkezelő php-ben

Fájlkezelő

Ezt a fájlkezelőt még a phpstudio-ra készítettem 2006 szeptemberében.
A kezelése és a megjelenése nem a legpraktikusabb / legmodernebb, de azért még így is hasznát lehet venni :)
Letöltés: Fájlkezelő


Amit tud
A fájlkezelõ képes mappákat, fájlokat másolni, áthelyezni, átnevezni, létrehozni, törölni.
Fájlokat meg is nyithatsz, és módosíthatod. Hasznos lehet apróbb hibák esetében, ha nem akarsz ftp-t használni.
Lehetőség van fájlok feltöltésére. Maximum 2MB lehet a fájlméret.

Beállítások:
A fajlkezelo.php nevű fájl elején megtalálod a $konyvtar változót.
Állitsd be azt a mappát, ahova szeretnéd tenni a feltöltött fájlokat.
pl : $konyvtar = "temp";
A belépéshez még szükség van egy jelszóra. Ezt is a fajlkezelo.php elején teheted meg.
Töltsd fel a fajlkezelo.php fájt a szervered gyökérkönyvtárába, és máris tallózhatsz a fájlok között.

Használata
Válaszd ki a mappát, ahonnan szeretnéd listázni a fájlokat. Ezt megtalálod a "honnan" link mellett.
Majd válaszd ki, hogy hova szeretnél másolni, áthelyezni, stb... Ezt pedig a hova link mellett találod.
Ha egy szintet feljebb szeretnél ugrani a mappákban, akkor válaszd az >>1 szint fel<< opciót.

Miután a fájlok listája megjelenik, válaszd ki a fájlt, amivel dolgozni szeretnél. És jelöld ki azt másolást, vagy az áthelyezést attól függöen, mit szeretnél a fájllal. Lehetõség van a fájlok átnevezésére. Ezt akár a másolás, akár az áthelyezés opcioval is megteheted. Ha csak másolni szeretnél ugyanabba a mappába, ahol a forrásfájl található, csak jelöld ki a másolást, és nevezd át a fájlt. A cél mappa (hova) egyezzen.

Ha már egy meglévő fájlt, pl egy php szkriptedet szeretnéd feltölteni, azt is megteheted.

Ha egy meglévő fájlt szeretnél szerkeszteni, válaszd ki a fájlok listájában a fájlt, és kattints a szerkeszt linkre.
Itt módosíthatod a fájlokat. A megnyitás csak szöveges fájlok esetében működik. Így például nem tudsz megnyitni képfájlokat szerkesztésre.

Fájlok méretét is megnézheted. Amikor kiválasztod a fájlt, automatikusan megjelenik az oldal tetején a mérete a nevével együtt.

Megosztás/Mentés