Toon posts:

[delphi] bestand kopieren procedure werkt niet ...

Pagina: 1
Acties:
  • 194 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb nou dus een beetje met delphi (5) zitten klooien, maar nu wou ik dus een procedure maken dat een bestand kopieert... en had ik dus het volgende in gedachte :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.docopy(Sender: TObject);

var sourcefile,destfile : textfile;
    buffer        : char;

begin
  assignfile(sourcefile,edit1.text);  // in edit1 staat het bronbestand
  assignfile(destfile  ,edit2.text);  // in edit2 staat het doelbestand
  reset(sourcefile); // bronbestand openen
  rewrite(destfile); // doelbestand aanmaken
  while NOT Eof(sourcefile) do  // totdat ie aan het eind van het bronbestand is (dit kan toch zo?)
    begin
    Read(sourcefile,buffer); // 1 byte uitlezen uit de bronbestand
    Write(destfile,buffer);  // 1 byte schrijven in het doelbestand
    end;
  closefile(sourcefile);  // bronbestand sluiten
  closefile(destfile);    // doelbestand sluiten
  showmessage('Done with copy');  // berichtje geven dat ie klaar is
end;

in turbopascal werkt een soortgelijke procedure wel goed, maar in delphi niet... als ik dan et doelbestand inlees zijn er maar een aantal bytes gekopieert en niet het hele bestand.

ik wil perse een procedure die het byte voor byte kopieert zodat het muteren van bepaalde bytes dan makkelijker is (of heb ik dit mis??)

doe ik in bovenstaande procedure iets fout??

b.v.d. Dave :)

  • jopiek
  • Registratie: September 2000
  • Laatst online: 30-03 18:57

jopiek

Tja... 'ns ff denken.

ik ga niet in jou source hacken: er is een goed werkende procedure in fmxutils.pas! (demos dir onder docs geloof ik)

Cogito Ergo Credo


Verwijderd

Het bovenstaande is toch veels te lang gebruik de
ingebouwde copyfile functie !!!!

Tik maar in delphi copyfile(
en dan zie je wel hoe het verder werkt

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Volgens mij werkt die functie hierboven alleen voor tekst bestanden. Is dit bij je bekend, dan heb ik niks gezegd. :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 11:37

Knutselsmurf

LED's make things better

En als je echt veel wilt kopieren moet je maar eens kijken naar de windows-functie SHFileOperation.

- This line is intentionally left blank -


Verwijderd

nee hoor met copyfile kan je alles kopieeren want daar gebruik ik het zelf ook voor.

  • Boe
  • Registratie: Juni 1999
  • Laatst online: 09-10-2025

Boe

jelmervos bedoelt de functies Read en Write, en daar heeft hij gelijk in. Wil je ook binaire files lezen en schrijven kan je (onder andere ) ReadBlock / WriteBlock gebruiken.

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 11:37

Knutselsmurf

LED's make things better

Op zondag 19 augustus 2001 20:58 schreef 0101-Run het volgende:
nee hoor met copyfile kan je alles kopieeren want daar gebruik ik het zelf ook voor.
Met als grote verschil dat je bij copyfile geen *.* als argument kunt geven. :)

edit:
Ik zie dat de reacties een beetje door elkaar lopen. Jij reageerde niet op mij, maar op jelmervos, die op zijn beurt niet reageerde op jou maar op een post daarvoor.

- This line is intentionally left blank -


Verwijderd

Topicstarter
nou... wat eigenlijk meer mijn bedoeling is:

om een bestand te kopieren en bij bepaalde bytes (of reeksen mutaties te kunnen aanbrengen zoals dit bv:

als er bv een '@' (of ander teken) wordt ingelezen dat deze dan bijvoorbeeld kan vervangen worden door bv een '#' (of ander teken). maar dat de rest van het bestand hetzelfde blijft....

dus zoiets:
code:
1
2
3
read(source,buffer);            // lezen uit bron
if buffer='@' then buffer:='#';     // evt muteren
write(dest,buffer);          // schrijven naar doel

maar eerst moet dan uiteraard de copy functie goed werken...

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op zondag 19 augustus 2001 21:38 schreef Boe het volgende:
jelmervos bedoelt de functies Read en Write, en daar heeft hij gelijk in. Wil je ook binaire files lezen en schrijven kan je (onder andere ) ReadBlock / WriteBlock gebruiken.
Dat bedoel ik idd. Zie nu pas dat het ook anders kan worden opgevat.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 11:37

Knutselsmurf

LED's make things better

Op zondag 19 augustus 2001 22:53 schreef jelmervos het volgende:

[..]

Dat bedoel ik idd. Zie nu pas dat het ook anders kan worden opgevat.
Maar dan moet je niet je bestand als textfile openen maar als file of byte. Dan kan je letterlijke bytes uit je bestand lezen. (en schrijven)

- This line is intentionally left blank -


  • Boe
  • Registratie: Juni 1999
  • Laatst online: 09-10-2025

Boe

Inderdaad file of byte gebruiken, maar dan krijg je natuurlijk geen '#' of '@' eruit, die codes moet je maar even opzoeken dan.

Off topic (het is even ter sprake gekomen):
Wil je wildcards hebben, dan kan je het best FindFirst en FindNext gebruiken, en elk resultaat met CopyFile kopieren.

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 11:37

Knutselsmurf

LED's make things better

Op maandag 20 augustus 2001 00:11 schreef Boe het volgende:
Inderdaad file of byte gebruiken, maar dan krijg je natuurlijk geen '#' of '@' eruit, die codes moet je maar even opzoeken dan.

Off topic (het is even ter sprake gekomen):
Wil je wildcards hebben, dan kan je het best FindFirst en FindNext gebruiken, en elk resultaat met CopyFile kopieren.
Ik ben verder in de code van de SHFileOperation functie gedoken en het blijkt dat deze functie bijvoorbeeld ondersteuning heeft voor confirmation bij overschrijven van bestanden enz. In feit wordt alles wat je in de explorer doet met bestanden en directories (copieeren, deleten, moven) door deze functie uitgevoerd. Ik zie dus niet in waarom je het wiel nog een keer uit gaat vinden door FindFirst en findNext enz. te gebruiken.

- This line is intentionally left blank -


Verwijderd

Topicstarter
Op maandag 20 augustus 2001 00:11 schreef Boe het volgende:
Inderdaad file of byte gebruiken, maar dan krijg je natuurlijk geen '#' of '@' eruit, die codes moet je maar even opzoeken dan.
ja daar heb ik een ascii-lijstje voor... 'k kijk wel ff..

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 11:37

Knutselsmurf

LED's make things better

Op maandag 20 augustus 2001 19:59 schreef MPdave het volgende:

[..]

ja daar heb ik een ascii-lijstje voor... 'k kijk wel ff..
ord ('@') en ord('#') doen het ook hoor :)

- This line is intentionally left blank -


Verwijderd

Topicstarter
ja, 't werkt nu allemaal wel...

btw bedankt voor de reply's
Pagina: 1