<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
	<title>Programowanie</title>
	<description>Programowanie</description>
	<link>http://forum.ks-ekspert.pl/index.php</link>
	<pubDate>Wed, 01 Feb 2012 20:00:11 +0000</pubDate>
	<ttl>15</ttl>
	<item>
		<title><![CDATA[[C#] Webbrowser na pare form]]></title>
		<link>http://forum.ks-ekspert.pl/topic/139581-c-webbrowser-na-pare-form/</link>
		<description><![CDATA[Witam.<br />
<br />
Chciałbym was się zapytać czy jest możliwość zrobienia jednego webbrowsera na pare form?. Mam jedną forme w którym wpisuje dane, drugą formę odpalam po kliknięciu w button(Druga forma to webbrowser). I chciałbym zrobić tak aby otworzyć forme drugą, i widzieć stronę WWW a w formie pierwszęj wpisać dane, nacisnąć OK i w drugiej formie wszystko się działo.<br />
<br />
Mam nadzieje, że ktoś mnie zrozumie bo to jest trudne do wytłumaczenia bez pokazania zdjęciami ;/<br />
<br />
Z góry dziękuje i pozdrawiam]]></description>
		<pubDate>Wed, 01 Feb 2012 20:00:11 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/139581-c-webbrowser-na-pare-form/</guid>
	</item>
	<item>
		<title><![CDATA[[C++] Funkcje zaprzyjaźnione klasy pochodnej]]></title>
		<link>http://forum.ks-ekspert.pl/topic/139494-c-funkcje-zaprzyjaznione-klasy-pochodnej/</link>
		<description><![CDATA[<pre class='prettyprint'>class Kaczor
{
  friend ostream & operator&lt;&lt;(ostream & wy, Kaczor & obiekt);
  friend istream & operator&gt;&gt;(istream & we, Kaczor & obiekt);
}

class Donald : public Kaczor
{
  friend ostream & operator&lt;&lt;(ostream & wy, Donald & obiekt);
  friend istream & operator&gt;&gt;(istream & we, Donald & obiekt);
}

Kaczor* obiekt = new Donald; //wskaźnik ma typ klasy bazowej, ale wskazuje na potomną

plik &lt;&lt; *obiekt;</pre><br />
Niestety, w tym miejscu C++ wywołuje zaprzyjaźnioną funkcję operatorową dla klasy <strong class='bbc'>bazowej</strong> Kaczor. Chcę, aby wywołały się funkcje operatorowe dla klasy <strong class='bbc'>pochodnej</strong> Donald. Nie da się nadać funkcjom atrybutu <strong class='bbc'>virtual</strong>, bo nie są członkami klas. Próbowałem to obejść:<br />
<br />
<pre class='prettyprint'>class Kaczor
{
  friend ostream & operator&lt;&lt;(ostream & wy, Kaczor & obiekt);
  friend istream & operator&gt;&gt;(istream & we, Kaczor & obiekt);
  public: virtual istream & put(istream & we);
  public: virtual ostream & get(ostream & wy);
}

class Donald : public Kaczor
{
  friend ostream & operator&lt;&lt;(ostream & wy, Donald & obiekt);
  friend istream & operator&gt;&gt;(istream & we, Donald & obiekt);
  public: virtual istream & put(istream & we);
  public: virtual ostream & get(ostream & wy);
}

ostream & operator&lt;&lt;(ostream & wy, Donald & obiekt)
{
  return obiekt.get(wy); //podobnie dla &gt;&gt; w obu klasach
}</pre><br />
Niestety, kompilator Microsoftu wyrzuca błąd <strong class='bbc'>Unresolved link</strong>.<br />
<br />
Jak odwołać się do właściwej funkcji operatorowej?]]></description>
		<pubDate>Fri, 27 Jan 2012 18:51:42 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/139494-c-funkcje-zaprzyjaznione-klasy-pochodnej/</guid>
	</item>
	<item>
		<title><![CDATA[[Java] Problem z MIDLetem]]></title>
		<link>http://forum.ks-ekspert.pl/topic/139473-java-problem-z-midletem/</link>
		<description><![CDATA[Chciałem przerobić sobie programik z artykułu (Java na wynos), który został zamieszczony w Ekspercie (nr 2/2011 (69)). Zrobiłem krok po kroku wszystko jak w opisie, niestety programik nie startuje.<br />
<br />
Kod<br />
<pre class='prettyprint'>import javax.microedition.midlet.MIDlet;
import com.sun.lwuit.Command;
import com.sun.lwuit.Display;
import com.sun.lwuit.Form;
import com.sun.lwuit.Image;
import com.sun.lwuit.Label;
import com.sun.lwuit.List;
import com.sun.lwuit.events.ActionEvent;
import com.sun.lwuit.events.ActionListener;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;



public class Kraje extends MIDlet implements ActionListener {
	private Form form_list, form_item;
	private Command com_exit=new Command("koniec");
	private Command com_show=new Command("pokaż");
	private Command com_back=new Command("powrót");
	private String tab&#91;&#93;=new String&#91;10&#93;;
	private String tab_items&#91;&#93;&#91;&#93;=new String &#91;10&#93;&#91;10&#93;;
	private Image img;
	private Image tab_img&#91;&#93;=new Image &#91;10&#93;;
	private List list;

public void startApp(){
Display.init(this);
try{
	Resources res=Resources.open("/theme_kraje.res");
	UIManager.getInstance().setThemeProps(res.getThemeResourceNames()&#91;0&#93;);
}catch (Exception e){
	System.out.println("Nie można załadować pliku.");
	
}
tab=new String &#91;&#93;{"Polska", "Australia", "Brazylia", "Grecja", "Hiszpania", "Iran", "Japonia", "Kanada", "Kolumbia", "Zair"};

tab_items=new String&#91;&#93;&#91;&#93;{

		{"Warszawa","polski","złoty polski"},
		{"Canaberra","angielski","dolar australijski"},
		{"Brasilia","portugalski","real brazylijski"},
		{"Ateny","grecki","euro"},
		{"Madryt","hiszpański","euro"},
		{"Teheran","perski","rial irański"},
		{"Tokio","japoński","jen"},
		{"Ottawa","angielski,francuski","dolar kanadyjski"},
		{"Bogota","hiszpański","peso kolumbijskie"},
		{"Kinszasa","francuski","zair"},
			
};
try{
	for (int i=0; i&lt;tab_img.length; i++){
		img=Image.createImage("/"+tab&#91;i&#93;+",png");
		tab_img&#91;i&#93;=img;
	}
}catch (Exception e){
	System.out.println("Nie można załadować pliku&#092;n");
}


form_list=new Form("Kraje");
form_list.addComponent(list);
form_list.addCommand(com_exit);
form_list.addCommand(com_show);
form_list.setCommandListener(this);
form_list.show();
}
public void pauseApp(){}

public void destroyApp(boolean unconditional) {}



public void actionPerformed(ActionEvent ae) {

		if(ae.getCommand()==com_exit){
			try
			{
				destroyApp(false);
				notifyDestroyed();
			}catch (Exception e){
					e.printStackTrace();}
			}
		
		else if(ae.getCommand()==com_show){
			int index=list.getSelectedIndex();
			String item=list.getSelectedItem().toString();
			form_item=new Form(item);
			String capital=tab_items&#91;index&#93;&#91;0&#93;;
			String lang=tab_items&#91;index&#93;&#91;1&#93;;
			String currency=tab_items&#91;index&#93;&#91;2&#93;;
	Label lab_img=new Label(tab_img&#91;index&#93;);
	form_item.addComponent(lab_img);
	Label lab_capital=new Label("stolica:"+capital);
	form_item.addComponent(lab_capital);
	Label lab_lang=new Label("język:"+lang);
	form_item.addComponent(lab_lang);
	Label lab_currency=new Label("waluta:"+currency);
	form_item.addComponent(lab_currency);
	form_item.addCommand(com_exit);
	form_item.addCommand(com_back);
	form_item.setCommandListener(this);
	form_item.show();
	
		}
		else if (ae.getCommand()==com_back){
			form_list.show();
		}
}
}</pre><br />
<br />
Console<br />
<pre class='prettyprint'>Installing suite from: http&#58;//127.0.0.1:53040/PhoneProject.jad
&#91;WARN&#93; &#91;rms     &#93; javacall_file_open: _wopen failed for: C:&#092;Users&#092;xxx&#092;javame-sdk&#092;3.0&#092;work&#092;0&#092;appdb&#092;_delete_notify.dat


****warning****
****Untrusted user classes must never be put
****on the system class path
****warning****

TRACE: &lt;at java.lang.Error: Unresolved compilation problem: 
	The method setThemeProps(Hashtable) in the type UIManager is not applicable for the arguments (String)
&gt;, startApp threw an Exception
java.lang.Error: Unresolved compilation problem: &#092;n&#092;tThe method setThemeProps(Hashtable) in the type UIManager is not applicable for the arguments (String)&#092;n
 - Kraje.startApp(), bci=6
 - javax.microedition.midlet.MIDletTunnelImpl.callStartApp(), bci=1
 - com.sun.midp.midlet.MIDletPeer.startApp(), bci=7
 - com.sun.midp.midlet.MIDletStateHandler.startSuite(), bci=269
 - com.sun.midp.main.AbstractMIDletSuiteLoader.startSuite(), bci=52
 - com.sun.midp.main.CldcMIDletSuiteLoader.startSuite(), bci=8
 - com.sun.midp.main.AbstractMIDletSuiteLoader.runMIDletSuite(), bci=161
 - com.sun.midp.main.AppIsolateMIDletSuiteLoader.main(), bci=26
java.lang.Error: Unresolved compilation problem: &#092;n&#092;tThe method setThemeProps(Hashtable) in the type UIManager is not applicable for the arguments (String)&#092;n
 - Kraje.startApp(), bci=6
 - javax.microedition.midlet.MIDletTunnelImpl.callStartApp(), bci=1
 - com.sun.midp.midlet.MIDletPeer.startApp(), bci=7
 - com.sun.midp.midlet.MIDletStateHandler.startSuite(), bci=269
 - com.sun.midp.main.AbstractMIDletSuiteLoader.startSuite(), bci=52
 - com.sun.midp.main.CldcMIDletSuiteLoader.startSuite(), bci=8
 - com.sun.midp.main.AbstractMIDletSuiteLoader.runMIDletSuite(), bci=161
 - com.sun.midp.main.AppIsolateMIDletSuiteLoader.main(), bci=26</pre><br />
<br />
Czy ktoś ma jakikolwiek pomysł dlaczego ten program nie działa i co zrobić by zadziałał?<br />
Z góry dziękuję za pomoc.<br />
Pozdrawiam.]]></description>
		<pubDate>Thu, 26 Jan 2012 22:02:10 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/139473-java-problem-z-midletem/</guid>
	</item>
	<item>
		<title>Pobieranie potrzebnych plików - HTTPGet Delphi</title>
		<link>http://forum.ks-ekspert.pl/topic/139470-pobieranie-potrzebnych-plikow-httpget-delphi/</link>
		<description><![CDATA[Cześć.<br />
Piszę taką aplikację do aktualizowania kilku plików tekstowych.<br />
Wygląda to tak:<br />
Użytkownik po swojej stronie ma plik ini o takiej mniej więcej strukturze:<br />
[main]<br />
count=4<br />
[plik1]<br />
url=jakistamurl<br />
wersja=1<br />
[plik2]<br />
url=jakistamurl<br />
wersja=1<br />
... i tak dalej (4 pliki).<br />
Sprawdzenie czy trzeba zaktualizować plik wygląda tak: pobranie pliku ini z serwera, sprawdzenie ile plików trzeba zaktualizać, pobranie po kolei, przy ostatnim pliku dodatkowe nadpisanie pliku ini (by program nie zapętlał się).<br />
Zrobiłem to mniej więcej tak:<br />
for i:=1, to count<br />
sprawdź_wersję_lokalną, sprawdź_wersję_pobraną, pobierz_url (pobiera url i wersje)<br />
if wersja_pobrana&gt;wersja_lokalna (porównuje)<br />
HTTPGet.URL:=pobierz_url;<br />
HTTpGet.Filename:='jakiś tam plik';<br />
HTTPGet.GetFile;<br />
Niby ok - w Memo1 program listuje które pliki są do pobrania, ale pobiera tylko pierwszy. Jak to rozwiązać?<br />
Największy problem sprawia mi zdarzenie HTTPondonefile, które powinno pobrać kolejny plik (aż do count) ale nie potrafię go użyć w moim programie.<br />
Podaję kod funkcji ondonefile, która wykonuje się po pobraniu pliki ini, zawierającego informacje o najnowszych plikach:<br />
<pre class='prettyprint'>
procedure TForm4.HTTPGet1DoneFile(Sender: TObject; FileName: string;
  FileSize: Integer);
  var
  count,i:integer;
  ini_lokalny,ini_pobrany:TIniFile;
  wersja_lokalna,wersja_pobrana:Integer;
  url, nazwa:string;
  pobieranie:TStringList;
begin
  ini_lokalny:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'versions.ini');
  ini_pobrany:=TIniFile.Create(HTTPGet1.FileName);
  pobieranie:=TstringList.Create;
  try
  count:=ini_pobrany.ReadInteger('general','count',5);
  for I := 1 to count do
  begin
    wersja_lokalna:=ini_lokalny.ReadInteger('Plik'+Inttostr(i),'version',1);
    wersja_pobrana:=ini_pobrany.ReadInteger('Plik'+Inttostr(i),'version',1);
    url:=ini_pobrany.ReadString('Plik'+Inttostr(i),'url','error');
      if wersja_pobrana&gt;wersja_lokalna then
      begin
        pobieranie.Add(url);
      end;
  end;
   Memo1.Lines.AddStrings(pobieranie);
{tu powinno rozpocząć się pobieranie plików}
  finally
  ini_lokalny.Free;
  ini_pobrany.Free;
  pobieranie.Free;
  end;
end;
</pre><br />
Hmm:<br />
<pre class='prettyprint'>
for d:=0 to liczba_pobran-1 do
     begin
       HTTPGet2.URL:=pobieranie&#91;d&#93;;
       HTTPGet2.FileName:=nazwy&#91;d&#93;;
       HTTPGet2.GetFile;
     end;
</pre><br />
Pobiera tylko 1, pierwszy plik.<br />
Hmm zrobiłem kilka poprawek i teraz nie wiem jak (a raczej czym) ściągnąć pliki za pomocą progress bara.<br />
<br />
Użyłem testowo UrlDownloadToFile tyle że podczas pobierania zamraża formę <img src='http://forum.ks-ekspert.pl/public/style_emoticons/inne/sad.gif' class='bbc_emoticon' alt=':(' />]]></description>
		<pubDate>Thu, 26 Jan 2012 15:48:19 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/139470-pobieranie-potrzebnych-plikow-httpget-delphi/</guid>
	</item>
	<item>
		<title>Pomoc turbo delphi</title>
		<link>http://forum.ks-ekspert.pl/topic/139270-pomoc-turbo-delphi/</link>
		<description><![CDATA[mam na zaliczeniu pewną rzecz do zrobienia a nie mam pojęcia jak. Jest ktoś w stanie mi to wytłumaczyć!!<br />
Mam TMemo, TButton i TEdit na formie i polecenie brzmi: wpisuje sobie w memo jakies wyrazy czy imiona i klikając przycisk(TButton) ma pojawić się komunikat"wystepuje" nie wystepuje' o zawartości pola edycyjnego w komponencie memo.]]></description>
		<pubDate>Mon, 16 Jan 2012 15:19:29 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/139270-pomoc-turbo-delphi/</guid>
	</item>
	<item>
		<title>Pomoc turbo delphi</title>
		<link>http://forum.ks-ekspert.pl/topic/139269-pomoc-turbo-delphi/</link>
		<description><![CDATA[mam na zaliczeniu pewną rzecz do zrobienia a nie mam pojęcia jak. Jest ktoś w stanie mi to wytłumaczyć!!<br />
Mam TMemo, TButton i TEdit na formie i polecenie brzmi: wpisuje sobie w memo jakies wyrazy czy imiona i klikając przycisk(TButton) ma pojawić się komunikat"wystepuje" nie wystepuje' o zawartości pola edycyjnego w komponencie memo.]]></description>
		<pubDate>Mon, 16 Jan 2012 15:17:49 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/139269-pomoc-turbo-delphi/</guid>
	</item>
	<item>
		<title><![CDATA[[C] program w c problemy]]></title>
		<link>http://forum.ks-ekspert.pl/topic/139196-c-program-w-c-problemy/</link>
		<description><![CDATA[Witam,<br />
mam do napisania program w C. Większość już zrobiłem mam problem z:<br />
- pętlą na restart programu z nowymi danymi (pytam użytkownika, czy tego chce),<br />
-zapis do dowolnego pliku, którego nazwę wybiera użytkownik (problem jest z drugą częścią - wybór nazwy przez użytkownika),<br />
-czy da się jakoś zaokrąglić liczbę? chodzi mi o zaokrąglenie np. warunek w ifie sprawdzał tylko 5 cyfr znaczących, a nie o wyświetlenie 5 czy 6 cyfr.]]></description>
		<pubDate>Sat, 14 Jan 2012 23:36:24 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/139196-c-program-w-c-problemy/</guid>
	</item>
	<item>
		<title><![CDATA[[Asembler] Sprawdzenie wartości bitu]]></title>
		<link>http://forum.ks-ekspert.pl/topic/139190-asembler-sprawdzenie-wartosci-bitu/</link>
		<description><![CDATA[Witam  <img src='http://forum.ks-ekspert.pl/public/style_emoticons/inne/smile.gif' class='bbc_emoticon' alt=':)' /> <br />
<br />
Potrzebuję sprawdzić wartości kolejnych bitów rejestru. 2 dni szukania, czytania, rozlewu krwi i potu na nic się nie zdały  <img src='http://forum.ks-ekspert.pl/public/style_emoticons/inne/sad.gif' class='bbc_emoticon' alt=':(' />  Wydaje się, że poniższe rozwiązanie powinno działać, jednak efekt, jaki uzyskuję to "10000000". To tak, jakby bit z lewej zwracało dobrze, a resztę zawsze jako zero. Bardzo proszę o pomoc, gdyż bez tego nie ma mowy żebym ruszył dalej z moim projektem.<br />
<br />
oto mój kod :<br />
<br />
<pre class='prettyprint'>	mov 	eax,10101010101010101101010101010101b ;testowana przykladowa wartosc
	mov 	ecx,8	;sprawdzam 8 bitow, 8 wykonan petli
	mov 	ebx,0	;zaczynam od bitu nr. 0
	
	TEST_BITOW:
	push 	ecx
	
	bt		eax,ebx	;zwraca w CF wartosc badanego bitu nr. ebx z zawartosci eax
	jc		jeden
	jnc		zero
	
	zero:
	invoke 	WriteConsoleA,hout,OFFSET w_zero,1,rout,0 ; wypisze 0
	jmp 	dalej
	
	jeden:	
	invoke 	WriteConsoleA,hout,OFFSET w_jeden,1,rout,0 ; wypisze 1
	
	dalej:
	inc		ebx ;zwieksza zaw. ebx
	pop 	ecx
	loop 	TEST_BITOW</pre><br />
<br />
Pozdrawiam.]]></description>
		<pubDate>Sat, 14 Jan 2012 18:53:59 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/139190-asembler-sprawdzenie-wartosci-bitu/</guid>
	</item>
	<item>
		<title><![CDATA[[Java] eventy na socketach]]></title>
		<link>http://forum.ks-ekspert.pl/topic/139035-java-eventy-na-socketach/</link>
		<description>Piszę mały serwer w javie i chciałem oprzeć go o eventy, aby nie tworzyć wątku dla każdego połączenia. Czy wiecie może jak można dodać event który by mnie informował, że coś zostało wysłane na socket? Nie mogę nic znaleźć w internecie. Z góry dzięki.</description>
		<pubDate>Tue, 10 Jan 2012 11:05:45 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/139035-java-eventy-na-socketach/</guid>
	</item>
	<item>
		<title><![CDATA[[C] Funkcja nie działa poprawnie po dodaniu menu (problem z 1 posta rozwiązany)]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138969-c-funkcja-nie-dziala-poprawnie-po-dodaniu-menu-problem-z-1-posta-rozwiazany/</link>
		<description><![CDATA[Proszę o pomoc w naprawieniu błędu. Visual Studio wyświetla błąd przy linii: int main(int argc, char *argv[]){ i twierdzi że brakuje średnika po znaku {<br />
Wrzucam cały kod, bo może to mieć coś do rzeczy. Tak nawiasem jak ktoś zobaczy jakieś błędy programistyczne, nieprawidłowe nawyki, proszę o zwrócenie uwagi. Dzięki<br />
<pre class='prettyprint'>
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;locale.h&gt; //potrzebna do polskich czcionek

#define MAX_NICK 81

struct zawodnik{
	int id;
	char nick&#91;MAX_NICK&#93;;
	int elo;
	int liczbaWygranych;
	int liczbaPrzegranych;
	struct zawodnik *pNext;
};

int czyWolny(char nick){
	return 0;
};

int wolnyId(void){
	return 0;
};


void dodajGracza(){
	struct zawodnik *glowny=NULL;
	struct zawodnik *poprzedni, *biezacy;
	char wejscie&#91;MAX_NICK&#93;;

	printf("Podaj pożądany nick: ");
	while(gets(wejscie) !=NULL && wejscie&#91;0&#93; !='&#092;0'){
		biezacy=(struct zawodnik *)malloc(sizeof(struct zawodnik));
		if(glowny==NULL)
			glowny=biezacy;
		else
			poprzedni-&gt;pNext = biezacy;
		biezacy-&gt;pNext = NULL;
		strcpy(biezacy-&gt;nick, wejscie);
	printf("Konto gracza %s zostało pomyślnie utworzone.",biezacy-&gt;nick);
};


int main(int argc, char *argv&#91;&#93;){
	setlocale(LC_ALL,"polish");
	dodajGracza();
}
</pre>]]></description>
		<pubDate>Sat, 07 Jan 2012 13:34:28 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138969-c-funkcja-nie-dziala-poprawnie-po-dodaniu-menu-problem-z-1-posta-rozwiazany/</guid>
	</item>
	<item>
		<title><![CDATA[[C++][spoj.pl]  Problem z zadaniami]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138888-cspojpl-problem-z-zadaniami/</link>
		<description><![CDATA[Witam serdecznie jako nowy użytkownik <img src='http://forum.ks-ekspert.pl/public/style_emoticons/inne/wink2.gif' class='bbc_emoticon' alt=';)' /> Ostatnimi czasy wziąłem się nieco za rozwiązywanie zadań ze spoj-a, jednak kilka z nich rozgrzebałem i niestety nie potrafię znaleźć w nich błędów (dokładnie 4) z góry dziękuję za udzieloną pomoc :D<br />
<br />
#1 <a href='http://pl.spoj.pl/problems/MWP3_3D/' class='bbc_url' title='Zewnętrzny odnośnik' rel='nofollow external'>http://pl.spoj.pl/problems/MWP3_3D/</a><br />
<br />
<pre class='prettyprint'>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;cmath&gt;
#include &lt;stdio.h&gt;

using namespace std;

int main(int argc, char *argv&#91;&#93;)
{
   ios_base::sync_with_stdio(0);
    const double pi = acos(-1.0);
    int t;
    scanf ("%t");
    for (int i=0; i&lt;t; i++)
    {
    int dlugosc, iloscludu;
    double obwod;
    cin &gt;&gt; dlugosc&gt;&gt; iloscludu   ;
   
   
    dlugosc/=2;
    obwod=2 * pi * dlugosc;
    
    
    
    if ((iloscludu%2) == 0 )
     {
        double centymetry=obwod/iloscludu; 
        printf("%5.3f",centymetry);            
                      
        iloscludu/=2; 
        cout &lt;&lt;" "&lt;&lt; iloscludu&lt;&lt; endl;
     }
    else  {
    double centymetry=(obwod/iloscludu)*0.5;
    printf("%5.3f",centymetry);  
    cout &lt;&lt;" "&lt;&lt; iloscludu&lt;&lt; endl;
}
    }
    return 0;
}
</pre><br />
<br />
#2 <a href='http://pl.spoj.pl/problems/FLAMASTE/' class='bbc_url' title='Zewnętrzny odnośnik' rel='nofollow external'>http://pl.spoj.pl/problems/FLAMASTE/</a><br />
<br />
<pre class='prettyprint'>#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;
int main()
{
   int t;
   cin &gt;&gt; t;
   while (t){
      string r,n = "";char y = 0;int e = 1;
      cin &gt;&gt; r;
      y=r&#91;0&#93;;
      for (unsigned int i =0;i&lt;r.length();++i){
         if(y == r&#91;i&#93;){
         ++e;
         }
         else{
            if (e &gt; 2){
cout &lt;&lt; y &lt;&lt; e;
            }else if(e == 2)
            cout &lt;&lt; y &lt;&lt; y;
            else
            cout &lt;&lt; y;
            e = 1;
            y = r&#91;i&#93;;
         }
      
      }
      if (e &gt; 2){
cout &lt;&lt; y &lt;&lt; e;
            }else if(e == 2)
            cout &lt;&lt; y &lt;&lt; y;
            else
            cout &lt;&lt; y;
cout &lt;&lt; endl;
      --t;
   }
}
</pre><br />
<br />
#3 <a href='http://pl.spoj.pl/problems/XIWTPZA/' class='bbc_url' title='Zewnętrzny odnośnik' rel='nofollow external'>http://pl.spoj.pl/problems/XIWTPZA/</a><br />
<br />
<pre class='prettyprint'>#include&lt;iostream&gt;
#include&lt;cmath&gt;
using namespace std;
int main()
{
double A,B,C,D,T,x,y,z,c;
cin&gt;&gt;T;
while(T)
{
cin&gt;&gt;A&gt;&gt;B&gt;&gt;C&gt;&gt;D;
if (A&gt;B) x=A;
else x=B;
if (C&gt;D) y=C;
else y=D;
if (A&lt;B) z=A;
else z=B;
if (C&lt;D) c=C;
else c=D;
if (((sqrt(A*A+B*B))&gt;(sqrt(C*C+D*D))&&(x&gt;y)&&(z&gt;c))) cout&lt;&lt;"TAK"&lt;&lt;endl;
else cout&lt;&lt;"NIE"&lt;&lt;endl;
T--;
}
return 0;
}
</pre><br />
<br />
I #4 <a href='http://pl.spoj.pl/problems/JSPACE/' class='bbc_url' title='Zewnętrzny odnośnik' rel='nofollow external'>http://pl.spoj.pl/problems/JSPACE/</a><br />
<br />
<pre class='prettyprint'>#include&lt;iostream&gt;
#include&lt;string&gt;
#include&lt;cctype&gt;
using namespace std;
string przeksztalc(string nowy);
int main()
{
        string sms;
        while(getline(cin,sms)) 
        {
                cout&lt;&lt;przeksztalc(sms)&lt;&lt;endl;
        }
 
        cin.ignore();
        cin.get();
}
string przeksztalc(string nowy)
{
        for(unsigned int i=0;i&lt;nowy.size();i++)
        {
                if(nowy&#91;i&#93;==' ')
                {
                        nowy.erase(i,1);
                        nowy&#91;i&#93;= toupper(nowy&#91;i&#93;);
                }
                if(nowy&#91;i&#93;=='.')
                {
                        nowy&#91;i+1&#93;= toupper(nowy&#91;i+1&#93;);
                }
        }
 
        return nowy;
}
</pre>]]></description>
		<pubDate>Fri, 06 Jan 2012 10:43:07 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138888-cspojpl-problem-z-zadaniami/</guid>
	</item>
	<item>
		<title><![CDATA[[Java/ Android SDK] Dziwaczny problem z instalacją]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138878-java-android-sdk-dziwaczny-problem-z-instalacja/</link>
		<description><![CDATA[Korzystam z Windows 7 64-bit<br />
<br />
Chciałem zacząć pisać aplikacje na Androida, ale za nic w świecie nie mogę poprawnie zainstalować wszystkiego aby działało. Najpierw zainstalowałem najnowsze JDK 1.7. Później SDK Androida. SDK Managerem zainstalowałem biblioteki do platformy 2.2 (którą mam w telefonie). Następnie skonfigurowałem Eclipse. JDK i Eclipse mam w wersji 64-bitowej. SDK Androida była tylko w jednej. Udało mi się stworzyć nowy projekt. Jednak kiedy spróbowałem go uruchomić w emulatorze, pojawił się blue screen, Windows się zrestartował i po ponownym uruchomieniu już przestało działać. Eclipse przestał widzieć Androida (dało się wprawdzie utworzyć projekt, ale nie znajdował SDK mimo, że w preferencjach podany był poprawny katalog). Znalazłem informacje, że trzeba dodać katalog JDK do zmiennej systemowej PATH. Zrobiłem to, ale nic nie pomogło (przed blue screenem działało bez modyfikacji zmiennej PATH). Zacząłem więc przeinstalowywać wszystko - usuwając i ponownie instalując Eclipse, JDK i SDK Androida. Nic nie pomogło. W dodatku teram nie otwiera się SDK Manager dla Androida więc nie mogę pobrać bibliotek dla platformy. Kiedy próbowałem uruchomić managera przez plik SDK Manager.exe, nic się nie dzieje (także nie ma komunikatów o błędzie). Znalazłem chyba na Wikipedii, że tego managera powinno się uruchamiać poleceniem android z menu Tools. Uruchomiłem to polecenie z konsoli i w odpowiedzi dostałem masę błędów:<br />
<br />
<pre class='prettyprint'>java.lang.NullPointerException
        at com.android.sdklib.internal.avd.AvdManager.parseAvdInfo(AvdManager.java:1267)
        at com.android.sdklib.internal.avd.AvdManager.buildAvdList(AvdManager.java:1246)
        at com.android.sdklib.internal.avd.AvdManager.&lt;init&gt;(AvdManager.java:224)
        at com.android.sdkuilib.internal.repository.UpdaterData.initSdk(UpdaterData.java:236)
        at com.android.sdkuilib.internal.repository.UpdaterData.&lt;init&gt;(UpdaterData.java:120)
        at com.android.sdkuilib.internal.repository.sdkman2.SdkUpdaterWindowImpl2.&lt;init&gt;(SdkUpdaterWindowImpl2.
java:115)
        at com.android.sdkuilib.repository.SdkUpdaterWindow.&lt;init&gt;(SdkUpdaterWindow.java:89)
        at com.android.sdkmanager.Main.showSdkManagerWindow(Main.java:325)
        at com.android.sdkmanager.Main.doAction(Main.java:308)
        at com.android.sdkmanager.Main.run(Main.java:120)
        at com.android.sdkmanager.Main.main(Main.java:103)</pre><br />
<br />
Czy może macie jakieś pomysły? Ciekawi mnie też co zepsuł ten blue screen, skoro po parę razy przeinstalowywałem wszystko i nic nie pomaga. Nawet przecież jakby się zepsuły jakieś pliki to przeinstalowanie wszystkiego powinno pomóc.<br />
<br />
EDIT: Z tym problemem sobie poradziłem. Znalazłem gdzieć, że trzeba usunąć folder .android z katalogu użytkownika. Jednak niestety cały czas mam BSODa przy próbie uruchomienia jakiegokolwiek projektu (wtedy kiedy ma się uruchomić emulator).<br />
<br />
EDIT2: Znalazłem problem. Wyłąśczyłem reset komputera po blue screenie i spisałem komunikat błędy. Zobaczyłem, że błąd powoduje plik embda64.sys. Okazało się, że jest to sterownik... zewnętrznego tunera TV. Po wyłączeniu urządzenia w menedżerze urządzeń jest ok. Tylko ciekawe jakim cudem tuner TV może powodować konflikt z emulatorem Androida. Naprawdę dziwne. Może się komuś to przyda, a może ktoś wie czy da się coś zrobić, żeby konfliktu nie było i nie trzeba było nic wyłączać.]]></description>
		<pubDate>Fri, 06 Jan 2012 00:37:59 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138878-java-android-sdk-dziwaczny-problem-z-instalacja/</guid>
	</item>
	<item>
		<title><![CDATA[[DELPHI]  Dziwne zachowanie kodu]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138833-delphi-dziwne-zachowanie-kodu/</link>
		<description><![CDATA[Witam.<br />
Piszę grę w warcaby na zaliczenie przedmiotu i podczas sprawdzania kodu okazało się że w pewnym miejscu kod dziwnie się zachowuje:<pre class='prettyprint'>  {--Ustal gracza &#91;MAX&#93; --}
    syt.gracz := 1;
    movs.pawn := 0;
    movs.point := 0;

      {--Obranie ruchu--}
    moves := generate(syt);
      {--Jesli ruchy nie istnieja--}
    if(moves = NIL) THEN BEGIN
      showMessage('no move poss');
      PCMove := fail;
    END ELSE BEGIN
      movs.point := -1000;
      WHILE(moves &lt;&gt; NIL) DO BEGIN
        moves^.mov.point := minmax(syt, moves^.mov, 1);
        IF(movs.pawn = 0) OR (moves^.mov.point &gt; movs.point) THEN BEGIN
          movs := moves^.mov;
            {--Bez tego gubi ruchy--}
       //  showMessage(inttostr(movs.pawn)+'x'+inttostr(movs.point));
        END;
        t := moves;
        moves := moves^.next;
        DISPOSE(t);
      END;</pre><br />
To fragment kodu w którym znalazłem błąd. Chodzi o to że jeżeli linijka <strong class='bbc'>showMessage(inttostr(movs.pawn)+'x'+inttostr(movs.point));</strong> jest ukryta to kod zapisuje inny ruch niż w przypadku gdy jest widoczna. Dla mnie to nie ma sensu gdyż ta linijka nic nie zmienia ani nie zapisuje tylko wyświetla, który pionek jest obecnie najlepszy i jaką ilość punktów ruch otrzymał. Ma ktoś może jakiś pomysł dlaczego tak się dzieje? Jeżeli ta część kodu nie wystarczy to podeślę więcej. <br />
Proszę o pomoc <img src='http://forum.ks-ekspert.pl/public/style_emoticons/inne/smile.gif' class='bbc_emoticon' alt=':)' />]]></description>
		<pubDate>Wed, 04 Jan 2012 12:17:41 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138833-delphi-dziwne-zachowanie-kodu/</guid>
	</item>
	<item>
		<title>MVC w PHP</title>
		<link>http://forum.ks-ekspert.pl/topic/138819-mvc-w-php/</link>
		<description><![CDATA[Witam,<br />
Mam pytanie do redakcji Eksperta, czy będzie w przyszłości artykuł o MVC w PHP? Wiem że są różne źródła z których moge się nauczyć tego, ale nie jestem pewien czy dobrze zrozumiałem, a też przy okazji przydałby sie jakiś przykład praktyczny dla mnie (np. na systemie newsow). Próbowałem się dowiedzieć na innych forach/stronach o tym co to jest, ale warto poczytać z kilku miejsc o tym <img src='http://forum.ks-ekspert.pl/public/style_emoticons/inne/smile.gif' class='bbc_emoticon' alt=':)' /><br />
<br />
Zamierzam napisać własnego CMS'a (żeby wysyłać go jako swoje "portfolio" do przyszłych pracodawców, jestem na etapie szukania pracy) i czasami się zdarza że jest pisane w wymaganiach znajomość MVC. Napisze po krótce jakby miał wyglądać struktura plików. I pytanie czy to byłoby jako MVC?<br />
/index.php - ładuje plik przez include(po przefiltrowaniu oczywiście) z GET'a, jak jej brak to ładuje stronę główną<br />
/include/ tu się znajdują pliki do ładowania,<br />
/class/ pliki do operacji na danych, uzytkownikach etc<br />
/views/ pliki HTML widoków<br />
<br />
Więc po kolei, jak to będzie działać:<br />
1. Domyślna akcja ładuje plik 'include/index.php'<br />
2. Nie ma żadnych parametrów, więc plik pobiera dane na stronę główną (wykorzystuje to łączenie z bazą danych przez classe w pliku 'class/mysql.php')<br />
3. Przekazuje on dane do pliku 'class/view.php' który będzie ładował plik HTML, następnie zajmował wartości przekazane przez pliki z include do widoku który na końcu będzie miał użytkownik.<br />
<br />
To jest taka moja teoria na szybko pisana. Pewnie troche zmienie podczas pisania :P I pytanie, czy dobrze myśle jak działa MVC? Zamierzam napisać sam mały kurs/tutoriala jak to wszystko załapie <img src='http://forum.ks-ekspert.pl/public/style_emoticons/inne/smile.gif' class='bbc_emoticon' alt=':)' /> może kiedyś go opublikujecie... Chociaż na stronie heh:)]]></description>
		<pubDate>Tue, 03 Jan 2012 20:54:33 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138819-mvc-w-php/</guid>
	</item>
	<item>
		<title>ASCII w C++</title>
		<link>http://forum.ks-ekspert.pl/topic/138815-ascii-w-c/</link>
		<description><![CDATA[Witam, mam problem i nie wiem za bardzo jak go rozwiązać a mianowicie chce użyć w swoim programie znaków z rozszerzonej tablicy ASCII kod znaku 201 <br />
zamiast tego wysakuje nie ramka a cos innego chodzi chyba o strone kodowania tylko nie wiem jak ja ustawic uzywam windows 7 i visual studio 2010]]></description>
		<pubDate>Tue, 03 Jan 2012 19:08:05 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138815-ascii-w-c/</guid>
	</item>
	<item>
		<title><![CDATA[[PASCAL] zadanie]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138743-pascal-zadanie/</link>
		<description><![CDATA[Witam mamy napisać w pascalu:<br />
<br />
Tutaj macie tresci tych zadan ktore trzeba zrobic do konca roku na informatyke : 1. napisz program dla probki 10-elementowej obliczajacy srednia arytmetyczna, odchylenie przecietne, wariacje i odchylenie standardowe (szukac w arciszewskim) + opis programu i definicje wszystkich tych pojec 2.Uzasadnienie merytoryczne pojecia silni (n!) 3.program na obliczanie n! metoda rekurencyjna 4. napisac program na obliczanie n! metoda iteracyjna ( zadanie nr 3 lub 4 bylo rozwiazane na wykladzie takze jesli ktos ma notatki to wystarczy przepisac) 5. napsac program na obliczanie symbolu Newtona ( n!/(n-k)!*k! ) 6.napisac program w ktorym zaangazowane bedzie n! ( ale juz nie symbol newtona) POWODZENIA !! Jak ktos to zrobi to niech podesle na e-maila grupowego to wszyscy troszke skorzystamy<br />
<br />
Oferuję 40 PLN za wykonanie tego, przelew z konta Inteligo (na inteligo kilka sekund)<br />
<br />
Moje gg: 1368609<br />
<br />
Pozdrawiam]]></description>
		<pubDate>Sat, 31 Dec 2011 13:31:44 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138743-pascal-zadanie/</guid>
	</item>
	<item>
		<title>Szyfrowanie w Delphi</title>
		<link>http://forum.ks-ekspert.pl/topic/138635-szyfrowanie-w-delphi/</link>
		<description><![CDATA[Witam, chciałbym napisać program szyfrujący działający wg. poniższych zadań:<br />
<br />
<p class='citation'>Cytat</p><div class="blockquote"><div class='quote'>Wymieniamy literki dźwięczne na bezdźwięczne i odwrotnie, tzn<br />
<br />
b-p<br />
k-g<br />
t-d<br />
s-z<br />
<br />
oraz <br />
<br />
f bez zmian<br />
<br />
w - v <br />
<br />
i - y<br />
<br />
ę-&gt;yn</div></div><br />
<br />
Napisałem coś takiego:<br />
<pre class='prettyprint'>procedure TForm1.Button2Click(Sender: TObject);
var eingabe:string;
begin
eingabe:= memowez.lines.GetText;
eingabe := StringReplace(eingabe ,'d','t',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'g','k',&#91;rfReplaceAll&#93;);
eingabe:= StringReplace(eingabe ,'b','p',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'p','b',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'v','w',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'y','i',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'z','s',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'s','z',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'t','d',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'k','g',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'w','v',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'i','y',&#91;rfReplaceAll&#93;);
eingabe := StringReplace(eingabe ,'ę','yn',&#91;rfReplaceAll&#93;);
memowydaj.lines.add(eingabe);
end;
</pre><br />
<br />
Niestety wówczas program dokonuje zmian na chybił trafił i jeśli podam mu zdanie: <em class='bbc'>Trochę trudno tutaj pisać</em> dostaję -&gt;<em class='bbc'> Trochyn drudno dudaj byzać</em><br />
A powinno być "Drochyn drutno dudaj bzać". Co powinienem zrobić i jak?]]></description>
		<pubDate>Mon, 26 Dec 2011 23:04:19 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138635-szyfrowanie-w-delphi/</guid>
	</item>
	<item>
		<title><![CDATA[[BATCH] Łączenie linijek w 2 plikach.]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138623-batch-laczenie-linijek-w-2-plikach/</link>
		<description><![CDATA[Mam taki problem jak w batchu połączyć odpowiednie linijki w 2 plikach ??<br />
<br />
Przykładowo jeden plik o nazwie plik1.txt oraz 2 o nazwie plik2.txt zawierające po 100 zwrotów,<br />
<br />
np. nazwy serwisów:  <br />
 Podstawowy aparat filtrowania <br />
 Usuga inteligentnego transferu w tle <br />
 PrzeglĄdarka komputera <br />
 Usuga obsugi Bluetooth <br />
a w pliku drugim status: <br />
 Running<br />
 Stopped<br />
 Stopped<br />
 Running<br />
<br />
Wynikiem miałby być plik3.txt z następującą zawartością:<br />
<br />
 Podstawowy aparat filtrowania Running<br />
 Usuga inteligentnego transferu w tle Stopped<br />
 PrzeglĄdarka komputera Stopped<br />
 Usuga obsugi Bluetooth Running<br />
<br />
Z góry dziękuję za jakąkolwiek pomoc <img src='http://forum.ks-ekspert.pl/public/style_emoticons/inne/wink2.gif' class='bbc_emoticon' alt=';)' />]]></description>
		<pubDate>Sun, 25 Dec 2011 14:38:43 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138623-batch-laczenie-linijek-w-2-plikach/</guid>
	</item>
	<item>
		<title><![CDATA[Prosty program wyznaczający najdłuższy ciąg [C++]]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138472-prosty-program-wyznaczajacy-najdluzszy-ciag-c/</link>
		<description><![CDATA[Witam, dostałem do napisania program ale niestety nie mogę sobie z nim poradzić. Treść zadania: Danych jest n liczb(mają być podawane kolejno). Wyznaczyć długość najdłuższego ciągu jedynek. Czyli miało by wyglądać to tak, że najpierw ustalam ile liczb będę podawał, następnie kolejno podaje dowolne liczby(tyle ile ustaliłem) i po podaniu ostatniej liczby miałby pojawić się komunikat o tym jaki był najdłuższy ciąg jedynek.<br />
Jeśli ktoś byłby tak dobry i mógłby mi napisać jak zorganizowac tutaj pętle i w ogóle jakiś pomysł na ten program, to byłbym wdzięczny <img src='http://forum.ks-ekspert.pl/public/style_emoticons/inne/smile.gif' class='bbc_emoticon' alt=':)' />.]]></description>
		<pubDate>Mon, 19 Dec 2011 08:28:30 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138472-prosty-program-wyznaczajacy-najdluzszy-ciag-c/</guid>
	</item>
	<item>
		<title>Pomysł na projekt</title>
		<link>http://forum.ks-ekspert.pl/topic/138460-pomysl-na-projekt/</link>
		<description><![CDATA[Cześć!<br />
<br />
Muszę napisać (tzn. nie muszę, ale chcę) program, którego opis jest dostepny tutaj:<br />
<a href='http://pluton.kt.agh.edu.pl/~gozdecki/Zadanie1.pdf' class='bbc_url' title='Zewnętrzny odnośnik' rel='nofollow external'>http://pluton.kt.agh.edu.pl/~gozdecki/Zadanie1.pdf</a><br />
<br />
Nie proszę w żadnym razie o pisanie czegokolwiek, tylko omówienie w skrócie jak do tego podejść i czego będę potrzebował <br />
(jakich bibliotek, funkcji)... wiedząc to jakoś to napiszę :-). Wtedy też się po prostu nauczę czegoś. Ale bez takiej wstępnej pomocy<br />
nic z tego nie wyjdzie, bo ślęczę już nad tym jakiś czas i nic...<br />
<br />
<br />
Z góry serdecznie dziękuję!]]></description>
		<pubDate>Sat, 17 Dec 2011 21:04:04 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138460-pomysl-na-projekt/</guid>
	</item>
	<item>
		<title><![CDATA[[C++, Pascal] Tablica dynamiczna, zaczynająca się od 1]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138412-c-pascal-tablica-dynamiczna-zaczynajaca-sie-od-1/</link>
		<description><![CDATA[Chodzi o zadanie z matury z informatyki rozszerzonej. Trzeba zrobić tablicę s[1..n], przy czym, jej wielkość będzie zależeć od wprowadzonego N. Wiem, że jest Setlength, ale tam indeks dolny zaczyna się od 0. <br />
<br />
Tu kod z c++<br />
<br />
<pre class='prettyprint'>
#include &lt;iostream&gt;
using namespace std;
int main()
{
int n;
int * s;
cin &gt;&gt; n;
s = new int&#91;n+1&#93;;
s&#91;1&#93; = 0;
for(int i=2;i&lt;=n;++i)
{
if(i%2 == 0)
s&#91;i&#93; = i-1+2*s&#91;i/2&#93;;
else
s&#91;i&#93; = i-1+s&#91;(i-1)/2&#93;+s&#91;(i+1)/2&#93;;
}
}</pre>]]></description>
		<pubDate>Thu, 15 Dec 2011 15:03:30 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138412-c-pascal-tablica-dynamiczna-zaczynajaca-sie-od-1/</guid>
	</item>
	<item>
		<title><![CDATA[[Pascal] Program do katalogowania]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138366-pascal-program-do-katalogowania/</link>
		<description><![CDATA[Mam za zadanie stworzyć na podstawie rekordów program do katalogowania. Wszystko już mam, ale żeby zapiąć to na ostatni guzik pozostały dwa malutkie problemy.<br />
Pierwszy:<br />
Mam procedurę otwierania pliku wywoływaną z menu głównego. Na początku program sprawdza, czy w zmiennej odpowiedzialnej za wprowadzanie ścieżki coś jest (nie ma tego w załączonym kodzie, ale działa), jeśli jest to otwiera plik, jeśli nie ma to wyświetla prośbę o ścieżkę. Zabezpieczyłem go przez próbą otworzenia nieistniejącego pliku, wygląda to mniej więcej tak:<br />
<pre class='prettyprint'>procedure openfile;
begin
write('Podaj sciezke do pliku: ');
readln(B);
a:=b+'.txt';
assign(p,a);
{$I-} 
reset(p);
{$I+}
if IOResult=2 then
begin
writeln ('Plik nie istnieje!');
openfile;
end
else
Seek(p, FileSize(p));
c:=true;
end;</pre><br />
Problem w tym, że jeśli użytkownik wprowadzi złą ścieżkę, wyświetli się komunikat, program wróci na początek pętli a później niezależnie od tego, czy poda dobrą czy złą ścieżkę program się wysypuje. Jest to dla mnie niezwykle dziwne, ponieważ sprawdzanie IO zastosowałem prawie identycznie w innej procedurze i działa bez problemu.<br />
Drugi problem:<br />
nie ogarniam rekordów dlatego nie wiem, czy dobrze zrobiłem. Deklaruje jakiś rekord:<br />
<pre class='prettyprint'>    plyta=record
         nazwaplyty:string&#91;20&#93;;
         wykonawca:string&#91;20&#93;;
         rokwydania:string&#91;4&#93;;
         polozenie:string&#91;20&#93;;
         nowalinia:string&#91;5&#93;;</pre><br />
W tym przypadku jest to płyta. Następnie procedura ładowania czegoś do rekordu:<br />
<pre class='prettyprint'>procedure dodajplyte;
begin
z:=1;
write('Ile plyt zamierzasz dodac? ');
readln(r);
while z&lt;=r do
begin
write('Podaj nazwe plyty: ');
readln(bufor.nazwaplyty);
bufor.nazwaplyty:=bufor.nazwaplyty+' ';
write('Podaj wykonawce plyty: ');
readln(bufor.wykonawca);
bufor.wykonawca:=bufor.wykonawca+' ';
write('Podaj rok wydania: ');
readln(bufor.rokwydania);
bufor.rokwydania:=bufor.rokwydania+' ';
write('Podaj polozenie: ');
readln(bufor.polozenie);
bufor.nowalinia:=#10#13;
write(p,bufor);
z:=z+1;
end;
close(p);
end;</pre><br />
Czy to jest dobrze zrobione, czy zmienna "bufor" nie jest potrzebna? No i najgorsze - jak ogarnąć typy w rekordzie? Na pewno 3 muszą być znakowe, ale nie mogę dać zbyt dużo znaków, bo użytkownik może sobie maksimum wpisać i tabelka w menu się rozjedzie. Jedna musi być koniecznie z rokiem. W tym momencie wrzucam to do stringa, ale można podać litery, a ja tego nie chcę.]]></description>
		<pubDate>Tue, 13 Dec 2011 19:05:44 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138366-pascal-program-do-katalogowania/</guid>
	</item>
	<item>
		<title><![CDATA[[PASCAL]Menedżer plików]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138356-pascalmenedzer-plikow/</link>
		<description><![CDATA[Dzień dobry,ja od jakiegoś czasu piszę nakładkę graficzną,już mam trochę zrobione(kalkulator,gry itd.).Tak więc hciałbym się zapytać,czy ktoś z Państwa ma kurs Pascala z CD Action(numer 09/2000),w którym była druga część o pisaniu menedżera plików pod DOS.Jeśli tak,to niech któryś przyśle skan lub niech przepisze kod z gazety.<br />
Pozdrawiam.]]></description>
		<pubDate>Tue, 13 Dec 2011 14:45:57 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138356-pascalmenedzer-plikow/</guid>
	</item>
	<item>
		<title><![CDATA[[Delphi] ShellListView]]></title>
		<link>http://forum.ks-ekspert.pl/topic/138304-delphi-shelllistview/</link>
		<description><![CDATA[Witam chciałem sobie stworzyć taki mały programik który będzie pokazywał mi ścieżkę do zaznaczonego przezemnie pliku.<br />
Użyłem do tego komponentu ShellListView i w zdarzeniu OnChange wpisałem przypisanie ścieżki zaznaczonego pliku do Label1.Caption. Wygląda to tak:<br />
<pre class='prettyprint'>procedure TForm1.ShellListView1Change(Sender: TObject; Item: TListItem;
  Change: TItemChange);
begin
Label1.Caption:=ShellListView1.Folders&#91;ShellListView1.ItemFocused.Index&#93;.PathName;
end;</pre><br />
<br />
Mój problem tkwi w tym, że za pierwszym razem jak wybiore jakiś plik (pliki jpg) to pokaże adres jak zaznacze sobie za chwile jakiś inny plik to wyskoczy błąd Access Violation. W czym może być problem?]]></description>
		<pubDate>Sun, 11 Dec 2011 22:25:54 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138304-delphi-shelllistview/</guid>
	</item>
	<item>
		<title>wężyki</title>
		<link>http://forum.ks-ekspert.pl/topic/138246-wezyki/</link>
		<description><![CDATA[Witam, mam problem z programem, prosze o pomoc.<br />
Program ma narysowac figure zlozona ze znakow &#092; backslash i / slash, zakodowana ciagiem cyfr, ktore podaje uzytkownik. reguly kodowania sa nastepujace: pierwsza cyfra okresla jak wysoko wznosi sie pierwszy odcinek łamanej, złożony z połaczonych /. Druga cyfra okresla jak nisko opada kolejny odcinek, zlozony z polaczonych &#092; (i zaczynajacych sie w punkcie, gdzie konczy sie pierwszy). Trzecia cyfra znow koduje odcinek wznoszacy sie a czwarta opadajacy itd. Takich wezykow moze byc kilka, kazdy nastepny zaczyna sie o znak nizej niz poprzedni. W miejscu gdzie znaki &#092; i / sie nakladaja nalezy wyswietlic X.<br />
dzieki z gory za pomoc!]]></description>
		<pubDate>Thu, 08 Dec 2011 10:38:42 +0000</pubDate>
		<guid>http://forum.ks-ekspert.pl/topic/138246-wezyki/</guid>
	</item>
</channel>
</rss>
