Brauche Hilfe bei Bibliotheksprogramm

Dieses Thema im Forum "Programmieren" wurde erstellt von hallodudu, 25. Februar 2006.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. hallodudu

    hallodudu Kbyte

    Registriert seit:
    29. Januar 2004
    Beiträge:
    173
    Ich weis das Oberon nicht sehr verbreitet ist, aber vieleicht kann mir ja trotzdem jemand helfen.
    Code:
    MODULE BiBo;
    IMPORT D:=Display, F:=File;
    
    CONST
     pfadname='C:\test2.txt';
     
    VAR h, Titel,Autor: ARRAY 50 OF CHAR;
        res: CHAR;
        Datei : F.Handle;
        create: BOOLEAN;
       
        fehler,x: INTEGER;
       
    PROCEDURE schreiben;
    BEGIN
      IF F.Exist(pfadname) THEN
          create:=FALSE
      ELSE
          create:=TRUE;
      END;
      F.Open(pfadname, create, F.DENYNONE, F.READWRITE, Datei, fehler);
      D.WriteLn;
      D. WriteStr('Geben Sie bitte folgende Daten ein ');
      D.WriteLn;
      x:=0;
      REPEAT   
          D.ClrScr;
          x:=x+1;
          D. WriteStr('Titel: ');
          D.ReadStr(Titel,25,res);
          D.WriteLn;
            D.WriteStr('Autor: ');
            D.ReadStr(Autor,25,res);
            F.WriteLn(Datei,Titel,fehler);
            F.WriteLn(Datei,Autor,fehler);
            F.Close(Datei);
            D.WriteLn;
            D.WriteStr("Weiterer Eintrag? j/n");
            D.WriteLn;
            D.ReadStr(h,25,res);
            D.WriteLn;
        UNTIL h="n";
    END schreiben;
    
    Ich habe jetzt 2 Fragen. Wie schaffe ich es, das der mehrmals in die Datei schreiben kann?
    Wie mache ich so was hier "Titel[x]". Ich habe das bisher nur mit dem Typ Integer erstellt. Geht es auch mit CHAR? Ziel davon soll sein, das ich die Variable Titel mit einer Art Indece versehe um sie dann besser weiter zu verarbeiten.
    Code:
    D.ReadStr(SuchString,20,res);
       REPEAT
         F.ReadLn(Datei, Titel, fehler);
         F.ReadLn(Datei, Autor, fehler);
         F.ReadLn(Datei, Jahr, fehler);
         F.ReadLn(Datei, Kategorie, fehler);
       IF (SuchString=Titel) OR (SuchString=Autor) OR (SuchString=Jahr) OR (SuchString=Kategorie) THEN
           D.ClrScr;
           Menue;
           D.WriteStrXY(30,5, "Eintrag vorhanden");
           D.WriteLn;
           D.WriteStr("Titel: ");
           D.WriteStr(Titel);
           D.WriteLn;
           D.WriteStr("Autor: ");
           D.WriteStr(Autor);
           D.WriteLn;
           D.WriteStr("Jahr: ");
           D.WriteStr(Jahr);
           D.WriteLn;
           D.WriteStr("Kategorie: ");
           D.WriteStr(Kategorie);
           D.WriteLn;
           D.WriteStr("Weiter mit beliebiger Taste");
       END;
       UNTIL F.AtEnd(Datei);
    
    Kann bitte auch mal jemand sich meine Suchfunktion anschauen. Ich verstehe net warum die nicht richtig funktioniert. Eigentlich liest der doch die ersten Daten ein, dann vergleicht er sie mit dem Suchstring und wenn se übereinstimmen gibt er se aus. Oder sehe ich das falsch?. Das Problem ist aber wenn ich z.B. nach dem Jahr suche dann zeigt er immer nur den Vertreter an, den er eigentlich zuletzt ausliest.
     
  2. hallodudu

    hallodudu Kbyte

    Registriert seit:
    29. Januar 2004
    Beiträge:
    173
    Also die Suchfunktion funktioniert jetzt so wie sie soll. Habe einfach noch eine Variable eingebaut die auf FALSE oder TRUE überprüft wird und er somit bei gefundne anhält und dann wieder auf FALSE gesetzt und dann das ganze wieder von vorne.
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen