Autor Beitrag
adfontes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win7 (64bit), WinXP
Delphi 2010 Prof, Delphi XE2 (Trial)
BeitragVerfasst: So 11.09.05 22:24 
huhu,

ich schlag mich immernoch mit meiner bücherverwaltung rum ^^
und hab mal wieder ein Problem:

Ich habe eine alte Datei die von einem uralten Pascal Programm kommt, in dem ich die Bücher früher verwaltet hab, nur mittlerweile is das ja so veraltet... daher ja überhaupt das projekt in delphi :)
Die alte Datei hab ich jetzt versucht über ein separates Programm zu übertragen... einziges problem: ich krieg andauernd fehler :(

mach wohl wie immer was falsch...


hier der record von dem alten pascal proggi, der grundlage der datei ist:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
type  buchlang=record
         art:integer;
         fach:string[1];
         thema:string[1];
         autorvor:string[12];
         autornach:string[18];
         titel:string[50];
         jahr:string[4];
         auflage:string[4];
         verlag:string[30];
         isbn:string[15];
         signatur:string[8];
         ausleihbar:integer;
         invnummer:string[13];
end;


dann der neue record:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
Type Fachbereich = RECORD
    Name : String[40];
    Kennbuchstaben : Char;
    BZahl,Farbe : Integer;
end;

Type Themenbereich = RECORD
    Name : String[40];
    Bzahl : Integer;
    kennzahl : string[1];
end;

Type Book = RECORD
    Titel : String[50];
    Verlag,AVorName,AName : String[30];
    Fachb : Fachbereich;
    Themenb : Themenbereich;
    biblio: char;
    isbn,invnummer : String[15];
    jahr,sig : String[10];
    auflage : string[4];
    ausleihbar,del : Boolean;
END;



und jetzt der versuch das ursprungsfile in den neue zu kriegen:
ausblenden volle Höhe Delphi-Quelltext
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:
begin
AssignFile (f,'C:\Buchlang.bl');
ASSignFile (g,'C:\Bibliothek.db');
Reset(f);
Rewrite(g);
While NOT EOF(f) do
begin
  read(f,alt);
         neu.Fachb.kennbuchstaben:=chr(STRTOINT(alt.fach));
         neu.themenb.kennzahl:=alt.thema;
         neu.AVorName:=alt.autorvor;
         neu.AName:=alt.autornach;
         neu.titel:=alt.titel;
         neu.jahr:=alt.jahr;
         neu.auflage:=alt.auflage;
         neu.verlag:=alt.verlag;
         neu.isbn:=alt.isbn;
         neu.sig:=alt.signatur;
         if alt.art=1 then
          neu.biblio:='A';
         if alt.art=2 then
          neu.biblio:='U';
         if alt.ausleihbar=1 then
          neu.ausleihbar:=True;
         if alt.ausleihbar=2 then
          neu.ausleihbar:=False;
         if (alt.ausleihbar<>1) and (alt.ausleihbar<>2) then
          neu.ausleihbar:=False;
         neu.invnummer:=alt.invnummer;
         neu.del:=false;
  write(g,neu);
end;
closefile(f);
closefile(g);
end;



ich glaub ich geb bald auf :( ... er gibt mir immer solche errors wie :
ausblenden Quelltext
1:
2:
Erste Zufalls-Exception bei $7C81EB33. Exception-Klasse EConvertError mit Meldung
''(Die deu' ist kein gültiger Integerwert'. Prozess Project4.exe (3724)


Moderiert von user profile iconChristian S.: Zeilenumbruch vor Codetag eingefügt
Einloggen, um Attachments anzusehen!
Grishnak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 221

Windows XP Home
Delphi 7 PE, Delphi 2005 PE
BeitragVerfasst: So 11.09.05 23:01 
Bis jetzt habe ich soviel rausgefunden:

Ein (alter) Datensatz besteht aus 171 Bytes!
Die Datei ist 344.565 Bytes groß und enthält also 2015 Datensätze!

Ich befürchte, Pascal hat Integer-Werte und/oder Strings anders behandelt als Delphi (z.B. für Integer-Werte nur 2 Bytes benutzt, statt 4 Bytes, wie es mein Delphi 7 tut). Daraus folgt, dass die Daten aus der Datei nicht mehr in deinen neuen alten Datentyp passen!

Weiteres später...

...später:

Ich denke, das hilft dir weiter:

ausblenden volle Höhe Delphi-Quelltext
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:
procedure AusAltMachNeu;
var
  AltBuchFile: file of char;
  NeuBuchFile: file of Book;
  AltBuchStr: string[171];
  B: Book;
begin
  AssignFile(AltBuchFile, 'BUCHLANG.BL');
  ReSet(AltBuchFile);

  AssignFile(NeuBuchFile,'Bibliothek.db');
  ReWrite(NeuBuchFile);

  SetLength(AltBuchStr, 171);
  while not EOF(AltBuchFile) do
    begin
      BlockRead(AltBuchFile, AltBuchStr[1], 171);

      B.Fachb.Kennbuchstaben:=AltBuchStr[4];
      B.Themenb.kennzahl:=AltBuchStr[6];
      B.AVorName:=Trim(MidStr(AltBuchStr, 8, 12));
      B.AName:=Trim(MidStr(AltBuchStr, 21, 18));
      B.Titel:=Trim(MidStr(AltBuchStr, 40, 50));
      B.jahr:=Trim(MidStr(AltBuchStr, 91, 4));
      B.auflage:=Trim(MidStr(AltBuchStr, 96, 4));
      B.Verlag:=Trim(MidStr(AltBuchStr, 101, 30));
      B.isbn:=Trim(MidStr(AltBuchStr, 132, 15));
      B.sig:=Trim(MidStr(AltBuchStr, 148, 8));

      case Ord(AltBuchStr[1]) of
        1:
          B.biblio:='A';
        2:
          B.biblio:='U';
      end;

      case Ord(AltBuchStr[156]) of
        1:
          B.ausleihbar:=true;
        else
          B.ausleihbar:=false;
      end;

      B.invnummer:=Trim(MidStr(AltBuchStr, 159, 10));
      B.del:=false;

      Write(NeuBuchFile, B);
  end;

  CloseFile(NeuBuchFile);
  CloseFile(AltBuchFile);
end;

_________________
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
adfontes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win7 (64bit), WinXP
Delphi 2010 Prof, Delphi XE2 (Trial)
BeitragVerfasst: Mi 14.09.05 14:46 
sorry, dass ich mich ne weile nicht gemeldet hatte, war aber so im stess, dass ich an dem proejkt nur wenig machen konnte...

danke schon mal für den vorschlag, ich werds auch direkt mal ausprobieren und dann schreiben wie's gelaufen ist :)



greetz
adfontes


......nach dem test:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
[Fehler] Unit4.pas(93): E2003 Undefinierter Bezeichner: 'MidStr'
[Fehler] Unit4.pas(93): E2250 Es gibt keine überladene Version von 'Trim', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit4.pas(94): E2250 Es gibt keine überladene Version von 'Trim', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit4.pas(95): E2250 Es gibt keine überladene Version von 'Trim', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit4.pas(96): E2250 Es gibt keine überladene Version von 'Trim', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit4.pas(97): E2250 Es gibt keine überladene Version von 'Trim', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit4.pas(98): E2250 Es gibt keine überladene Version von 'Trim', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit4.pas(99): E2250 Es gibt keine überladene Version von 'Trim', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit4.pas(100): E2250 Es gibt keine überladene Version von 'Trim', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit4.pas(119): E2250 Es gibt keine überladene Version von 'Trim', die man mit diesen Argumenten aufrufen kann
[Fataler Fehler] Project4.dpr(5): F2063 Verwendete Unit 'Unit4.pas' kann nicht compiliert werden


o_O ... sicher, dass es das MidStr in Verbindung mit Trim gibt ?
weil er bleibt genau in der 1. Zeile wo das MidStr verwendet wird hängen...

ausblenden Delphi-Quelltext
1:
      B.AVorName:=Trim(MidStr(AltBuchStr, 8, 12));					
Grishnak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 221

Windows XP Home
Delphi 7 PE, Delphi 2005 PE
BeitragVerfasst: Mi 14.09.05 22:06 
Die Funktion 'MidStr' findest du in Unit 'StrUtils'; diese musst du per 'uses'-Befehl mit einbinden!
Dann sollte es auch mit dem 'Trim' funktionieren!

_________________
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
adfontes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win7 (64bit), WinXP
Delphi 2010 Prof, Delphi XE2 (Trial)
BeitragVerfasst: Do 15.09.05 16:21 
( : Danke Danke Danke Danke Danke Danke Danke Danke Danke Danke Danke Danke Danke Danke : )

jetzt hats funktioniert... sorry, der Fehler die Unit zu vergessen war echt doof :roll: ... na ja


danke :)

greetz
adfontes