ik heb de volgende code om naar een textfile te schrijven:
werkt allemaal prima met schrijven enzo, maar nu heb ik er een check op staan: "checkLineExists" om te kijken of de regel die ik wil schrijven al bestaat in het betreffende textbestand. Die test geeft gewoon een boolean terug.
Geeft ie nu true terug dan begint het probleem, de append wordt dan namelijk niet uitgevoerd en hij gaat meteen naar de closefile functie, en op dat moment geeft ie dus een i/o error 103. Dat komt dus naar mijjn mening omdat ie een schrijfactie of zoiets verwacht (die append of die rewrite), maar die niet krijgt. Met welk commando kan ik het textbestand in een toestand krijgen dat ik hem wel weer kan sluiten zonder error? Of kan ik ook gewoon op de else van die
Dus dan zou je deze code krijgen:
Maar ik vraag me dus af of dat zomaar mag, een file op append zetten en vervolgens weer sluiten
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| procedure TForm1.writeToASCII(personName, queryKey, queryName, startText, queryResult, endText: String);
var
AFile: string;
LogFile: TextFile;
bQueryExists: Boolean;
begin
AFile := FileServerLoc + personName + '.txt';
AssignFile(LogFile, AFile);
if FileExists(AFile) then
begin
bQueryExists := checkLineExists(AFile, queryKey);
showmessage(BoolToStr(bQueryExists));
if bQueryExists = False then
begin
append(LogFile);
WriteLn(LogFile, queryKey + queryName + startText + endText);
end;
end
//if file doesn't exist then create a new file and open it (rewrite)
else //don't check if line exists, file has just been made, so it's empty, just add the line
begin
rewrite(LogFile);
WriteLn(LogFile, queryKey + queryName + startText + endText);
end;
CloseFile(LogFile);
end; |
werkt allemaal prima met schrijven enzo, maar nu heb ik er een check op staan: "checkLineExists" om te kijken of de regel die ik wil schrijven al bestaat in het betreffende textbestand. Die test geeft gewoon een boolean terug.
Geeft ie nu true terug dan begint het probleem, de append wordt dan namelijk niet uitgevoerd en hij gaat meteen naar de closefile functie, en op dat moment geeft ie dus een i/o error 103. Dat komt dus naar mijjn mening omdat ie een schrijfactie of zoiets verwacht (die append of die rewrite), maar die niet krijgt. Met welk commando kan ik het textbestand in een toestand krijgen dat ik hem wel weer kan sluiten zonder error? Of kan ik ook gewoon op de else van die
code:
zetten 1
| if bQueryExists = False then |
code:
1
| append(LogFile); |
Dus dan zou je deze code krijgen:
code:
1
2
3
4
5
6
7
8
9
10
| if FileExists(AFile) then
begin
bQueryExists := checkLineExists(AFile, queryKey);
if bQueryExists = False then
begin
append(LogFile);
WriteLn(LogFile, queryKey + queryName + startText + endText); end
else
append(LogFile);
end |
Maar ik vraag me dus af of dat zomaar mag, een file op append zetten en vervolgens weer sluiten