[ Passwd @ 16.06.2005. 21:01 ] @
Na ovaj princip...

Code:

procedure TForm1.Button1Click(Sender: TObject);
var a:file;
begin
assignfile(a,'c:\Podatak1.txt');
rewrite(a);
end;



....kako napravit 100 fajlova redom:
Podatak1.txt
Podatak2.txt
Podatak3.txt

Ako netko ima ideju kako tu upotrijebiti naprimjer:
for ......to
ili
repeat until
ili
while??????

for neki_broj:=1 to 100 do
begin
assignfile(fajl,'c:\Podatak'+neki_broj,'.txt');
rewrite(fajl);

Naravno ovo ne radi ali ako netko zna kako na taj ili slican nacin........
[ PeraKojotSuperGenije @ 16.06.2005. 22:06 ] @
Code:

var i: integer;
    a: textfile;
begin
for i:=1 to 100 do
begin
  assignfile(a, 'c:\podatak'+IntToStr(i)+'.txt');
  rewrite(a);
end;


Kod nisam testirao ali bi trebalo da radi!

Vrednost funkcije IntToStr(1234) je string '1234'. Imas i obrnutu funkciju StrToInt, kao i slicne FloatToStr, TimeToStr, ... Za dalje informacije pogledaj u Help.
[ Srki_82 @ 16.06.2005. 22:46 ] @
Ne zaboravi i CloseFile!!!

@Passwd
Evo ti primer kako mozes da trazis fajlove... pisao sam ga da brzaka pa je kod malo bezveze, ali radi posao.
[ reiser @ 17.06.2005. 05:55 ] @
Ja bih to uradio preko API-ja ipak... :

Code:

uses
  Windows, SysUtils;

var
  C1 : Integer;

begin
  For C1 := 1 to 100 Do
    CloseHandle(CreateFile(PAnsiChar('C:\file' + IntToStr(C1) + '.txt'),
                           0,
                           0,
                           nil,
                           CREATE_NEW,
                           FILE_ATTRIBUTE_NORMAL,
                           0));
end;
[ Passwd @ 17.06.2005. 08:31 ] @
Hval, hvala...
@Srki_82-program je odlican samo ga nista ne kuzim (al bitno da radi svoje)!!

A dal se moze napravit jedan fajl koji ce imati 50 MB??
(na sto jednostavniji i meni razumljiviji nacin) :)
[ Nemanja Avramović @ 17.06.2005. 08:54 ] @
pazi 1 karakter ti je jedan bajt... 1 * 1024 ti je jedan kb a 1 * 1024 * 1024 ti je 1mb dok je, logicno, 50 * 1024 * 1024 = 50 mb

i onda ides (pseudo-code):
Code:

var i,mb:integer; //i sve ostale promenljive koje su ti potrebne
begin
//otvoris fajl
mb:=50 * 1024 * 1024; //ne znam koliko je tacno pa cemo u runtime-u da izracunamo
 for i:=1 to mb do
 begin
 //kod za upisivanje jednog bajta u fajl
 end;
//zatvoris fajl
end;


nadam se da bi tako nekako ishlo
[ reiser @ 17.06.2005. 14:04 ] @
Ovaj kod koji ja JaHvram predlozio bi pisao do sutra bajt po bajt u fajl :>
Mislim da postoji API koji rezervise unapred odredjeni prostor na hard disku, tj kreira fajl odredjene velichine i popunjava ga NULL karakterima, ali nisam sad na mom kompu da vidim koji je to API. A ako kojim slucajem ne postoji, onda napisi kod slican JaHvram-ovom samo povecaj buffer, recimo neka pise po 1mb svaki put u petlji :>
[ Nemanja Avramović @ 17.06.2005. 15:58 ] @
pa dobro, ja sam mu dao pseudo kod... ja tako radim, mada nikad nisam hteo 50mb da pisem u fajl :)

eh da, da ti se aplikacija ne bi zamrzla dok ide kroz petlju, bilo gde u for petlji dodaj:
Application.ProcessMessages; //dal' se ovako pise?? pises app(alt+space, enter).proc(alt+space, enter); <- hihihi
[ bancika @ 17.06.2005. 17:37 ] @
mozes sa stream:
Code:

var buffer: array [1..1024*1024] of byte; //1mb
     F: TStream;
begin
  FillChar(a, SizeOf(a), 0);
  for i := 1 to 1000 do
   begin
      F := TFileStream.Create('c:\test' + IntToStr('i') + '.txt', fmCreate);
      try
        for j := 1 to 50 do //50 mb
          F.Write(buffer, SizeOf(buffer));
      finally
        F.Free;
      end;
   end
end;


mislim da ce to da radi
[ reiser @ 17.06.2005. 18:54 ] @
Izgleda da ne postoji API namenjen za to...
Ovaj kod pishe 1 mb u fajl :

Code:

const
  bufsize = 1024 * 1024; // 1mb
var
  buf       : Array[1..bufsize] of Byte;
  fHnd      : THandle;
  lpWritten : Cardinal;
begin
  fHnd := CreateFile(PAnsiChar('C:\file.dat'),
                                   0,
                                   0,
                                   nil,
                                   CREATE_NEW,
                                   FILE_ATTRIBUTE_NORMAL,
                                   0));
  WriteFile(fHnd, buf, bufsize, lpWritten, nil);
  CloseHandle(fHnd);