1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Information ausblenden

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

    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

    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