"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| var f : text;
i, counter : Integer;
line : String;
begin
assign(f, "file");
reset(f);
counter := 1;
while (not eof(f))
begin
readln(f, line);
for i := 1 to 5 do
begin
deArray[counter][i] := copy(line, 1, pos(line, ","));
delete(line, 1, pos(line, ",") + 1);
end;
deArray[counter][6] = line;
inc(counter);
end;
end. |
Er zullen nog wel wat fouten in zitten, want sinds ik C++ gewend ben kan ik bijna geen Pascal meer
Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op
Ik heb beide programeer talen ooit eens gehad tijdens mijn studie, maar ben het nu hopeloos vergeten.
"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| Program Test;
Uses
Strings;
Const
Filename = 'blabla.txt';
Tab = #9;
Type
pCustomRecord = ^CustomRecord;
CustomRecord = record
Column1 : String;
Column2 : String;
Column3 : String;
Column4 : String;
end; {record}
Var
SrcFile : Text;
strRead : String;
MyArray : Array[1..10] of pCustomRecord;
CurrentRec : Word;
Procedure ReadRecord(Line : String);
var
I, J : Byte;
StrSub : String;
Begin
I := Pos(Tab, Line);
J := 1;
Inc(CurrentRec);
While I <> 0 Do Begin
{ Copy field value from data stream }
StrSub := Trim(Copy(Line, 1, I-1));
{ Remove field from data stream }
Delete(Line, 1, I);}
Case J Of
01 : MyArray[CurrentRec]^.Column1 := StrSub;
02 : MyArray[CurrentRec]^.Column2 := StrSub;
03 : MyArray[CurrentRec]^.Column3 := StrSub;
04 : MyArray[CurrentRec]^.Column4 := StrSub;
End; {case}
{ Next field }
Inc(J);
{ Search for next Tab-character in stream }
I := Pos(Tab, Line);
End;
End;
{-- MAIN PROGRAM --}
Begin
CurrentRec := 0;
Assign(SrcFile, Filename);
Reset(SrcFile);
While Not EOF(SrcFile) Do
Begin
ReadLn(SrcFile, strRead);
ReadRecord(strRead);
End;
End. |
je als je ook bytes enzo wil gebruiken (het zijn nu allemaal strings) dan moet je daar waar nodig (in die case statement) Str2Int(string, Integer) gebruiken, zit ook in zo'n strings-unit, misschien was het SYSUTILS
[edit]
en ook nog.. die constante Tab is in jou geval de ascii code van de komma (44 dus) en niet 9, dat is de TAB (had ik overgenomen uit standaard proggie)
mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider
De bedoeling is verder dat ik kolom 1 en kolom 4 wegschrijf in een andere file....
BdR, hoe leuk jouw code er ook uitziet, ik zou bij god niet weten hoe ik daarna kolom 1 en kolom 4 wegschrijf naar een file.
Klopt het dat ik maximaal 4 kolomen kan lezen met jouw file?
Ik zal eens even kijken.
Het lukt me al niet eens meer om een meerdimensionale array te declareren en ook daadwerkelijk te vullen. Kijken of ik nog oude source code kan vinden waarin me dit wel lukt...
[edit]
Trim is geen onderdeel van het standaard BP 7.0 units setje..
"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005
Die van mij was toch vrij simpel dacht ikOp woensdag 30 januari 2002 15:15 schreef Morpheus25 het volgende:
En ik al maar denken dat het simpel te doen moest zijn.
Die was ik nog ff vergeten ja..Het lukt me al niet eens meer om een meerdimensionale array te declareren en ook daadwerkelijk te vullen. Kijken of ik nog oude source code kan vinden waarin me dit wel lukt...
1
| var deArray: ARRAY[1..100] OF ARRAY[1..6] OF STRING[10]; |
Dan wordt het nog makkelijker.. nix prutsen met arrays of records etc. gewoon:De bedoeling is verder dat ik kolom 1 en kolom 4 wegschrijf in een andere file....
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
27
| var f_in, f_uit : text;
i, counter : Integer;
line : String;
col1, col4 : String;
begin
assign(f_in, "file.in");
assign(f_uit, "file.uit");
reset(f_in);
rewrite(f_uit);
counter := 1;
while (not eof(f))
begin
readln(f_in, line);
col1 := copy(line, 1, pos(line, ","));
for i := 1 to 3 do
begin
delete(line, 1, pos(line, ",") + 1);
end;
col4 := copy(line, 1, pos(line, ","));
inc(counter);
writeln(f_uit, col1, ",", col4);
end;
close(f_uit);
close(f_in);
end. |
Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op
1
2
3
| Var DestFile : Text; outputline : String; |
en het hoofd programma uitbreiden met
1
2
3
4
5
6
7
8
| Assign(DestFile, "output.txt"); Rewrite(DestFile); For i := 1 to CurrentRec Do Begin outputline := MyArray[CurrentRec]^.Column1 + ', ' + MyArray[CurrentRec]^.Column4; WriteLn(DestFile, outputline); End; Close(DestFile); |
en.. natuurlijk kan je wel meer dan 4 kolommen lezen, dat stukje van mij was gewoon een aanzet tot een oplossing (net als dit laatste voorbeeldje).
maarrrrrr.. kan je het niet makkelijker inlezen in MS-Excel dan komt er vanzelf zo'n open-wizard, die vraagt om welk soort delimiter je wil (komma dus) dan de kolommen bewerken en weer opslaan als text..
mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider
moet zijn:Op woensdag 30 januari 2002 15:37 schreef corani het volgende:
code:
1 2<snip> col1 := copy(line, 1, pos(line, ","));
1
| col1 := copy(line, 1, pos(',', line)); |
Na minor aanpassingen werkt hij eindelijk
Nu moet ik het probleem van de header en de footer nog zien op te lossen....
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
27
28
29
30
31
32
33
| hier staat een heleboel rotzooi + "====================================================================================================================================" "DEFAULT REPORT" "Peak","Component","Time","Height","Area","Norm. Area", "#","Name","[min]","[uV]","[%]","[%]", "------------------------------------------------------------------------------------------------------------------------------------" 1,"",3.516,870.39,0.02,0.02 2,"",4.185,496.94,0.00,0.00 3,"",4.600,992721.68,81.91,81.91 4,"",6.181,142398.93,1.09,1.09 5,"",6.754,6466.41,0.09,0.09 6,"",6.977,420648.06,2.02,2.02 7,"",7.558,1.02e+06,5.84,5.84 8,"",8.368,2960.17,0.02,0.02 9,"",8.673,212008.19,1.10,1.10 10,"",11.279,29884.68,0.20,0.20 11,"",12.210,220.46,0.01,0.01 .... 53,"",43.746,106.05,0.00,0.00 54,"",45.094,282.37,0.00,0.00 55,"",46.233,106.12,0.00,0.00 "------------------------------------------------------------------------------------------------------------------------------------" "","","",3.99e+06,100.00,100.00 "Missing Component Report" "Component", "Expected Retention (Calibration File)" "---------------------------------------------------------------" " All components were found" |
Dat moet ik er nu ook nog uit zien te slopen. Suggesties??
Op zich wel, ware het niet dat het de bedoeling is dat een hele directory in 1x geconverteerd moet worden naar een ander formaat. (Dit lukt nog met VBA)Op woensdag 30 januari 2002 15:46 schreef BdR het volgende:
maarrrrrr.. kan je het niet makkelijker inlezen in MS-Excel dan komt er vanzelf zo'n open-wizard, die vraagt om welk soort delimiter je wil (komma dus) dan de kolommen bewerken en weer opslaan als text..
Verder is het de bedoeling dat het programma om de zoveel minuten de directory checked of er een nieuwe file is en deze direct omzet.
Hij moet dus in de achtergrond draaien (en dit kan volgens mij niet bij Excel)
"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005
1) die TRIM en COPY string functies heb je standaard
2) je kan met een timer object simpel weg je programmaatje om de zoveel tijd laten uitvoeren..
3) VB rulez
en ik weet niet precies wat je bedoeld met header en footer, maar ik neem aan dat je die wilt herkennen zodat die niet ook omgezet wordt?
mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider
Denk dat ik dat ook maar ga doen inderdaad... pff, wat een gedoe in pascal....Op woensdag 30 januari 2002 16:10 schreef BdR het volgende:
als dit geheel in een windows omgeving moet worden uitgevoerd, dan zou ik VB gebruiken
"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005