Dateiinhalte überschreiben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dateiinhalte überschreiben

    Hallo,
    warum funktioniert es bei mir nicht Inhalte in einer Datei zu überschreiben?
    Hier das Script:

    $fp = fopen("test.dat",'w');
    wlongword($fp,1);
    wlongword($fp,2);
    wlongword($fp,3);
    fclose($fp);

    test.dat => 123

    $fp = fopen("test.dat",'a');
    fseek($fp,4,SEEK_SET);
    fwrite($fp,4);
    fclose($fp);

    test.dat => 1234 und es sollte 143 sein!!!

    Was ist falsch?

  • #2
    weil dein offset bei fseek 4 ist, also hinter 123
    du mußt da schon den offset 2 nehmen
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      was soll denn die Funktion wlongword machen ?
      Ansonsten wie TBT schon sagt....


      gruss

      rth
      H I L F E
      GD FreeType Antialising
      Gesuch PHP Entwicklungsumgebung
      ------------------------------------------
      Der Cmabrigde rael tset, sruf whoin du wlilst

      Kommentar


      • #4
        Auch bei fseek($fp,2,SEEK_SET); funktioniert es nicht!

        wlongword ist eine funktion, die einen Longword schreibt (Kompatibel zum meinen Delphi-Programmen)


        function wlongword($filep,$i)
        {
        $a = 0;
        while ($i > (256*256*256)) :
        $i = $i-(256*256*256);
        $a++;
        endwhile;
        $b = 0;
        while ($i > (256*256)) :
        $i = $i-(256*256);
        $b++;
        endwhile;
        $z = 0;
        while ($i > 256) :
        $i = $i-256;
        $z++;
        endwhile;
        fwrite($filep,chr($i));
        fwrite($filep,chr($z));
        fwrite($filep,chr($b));
        fwrite($filep,chr($a));
        }

        Kommentar


        • #5
          Aber zum testen hatte ich wlongword durch fwrite ersetzt...

          Kommentar


          • #6
            ja muss auch
            PHP-Code:
            fseek($fp,1,SEEK_SET
            heissen, der zähler beginnt ja bei 0 !

            Ich denke dann kommst du zum gewünschten Ergebniss, oder nicht ?

            gruss

            rth
            H I L F E
            GD FreeType Antialising
            Gesuch PHP Entwicklungsumgebung
            ------------------------------------------
            Der Cmabrigde rael tset, sruf whoin du wlilst

            Kommentar


            • #7
              Ne funktioniert auch nicht, war aber schon vorher klar, weil es hätte sonst ja 124 heißen müssen. Das Problem ist ja, daß er es immer wieder hinten anhängt.

              Ich habe das ganze in 2 Script aufgeteilt.
              Das erste (test1.php) schreibt die Daten neu, also vom ersten fopen bis zum ersten fclose und das zweite (test2.php) soll Daten ändern (Vom zweiten fopen bis zum 2. fclose).

              Wenn ich nun Test1 einmal ausführe und danach 2 mal test2 steht in der Datei 12344, also hängt er immer nur eine 4 an

              Kommentar


              • #8
                hast du die Datei schon mal mit

                PHP-Code:
                $fp=fopen("datei","r+"); 
                versucht zu öffnen ? (vielleicht liegts ja an dem a, ich weiss jetzt leider immoment auch nicht )

                gruss

                rth
                H I L F E
                GD FreeType Antialising
                Gesuch PHP Entwicklungsumgebung
                ------------------------------------------
                Der Cmabrigde rael tset, sruf whoin du wlilst

                Kommentar


                • #9
                  Jo danke, passt jetzt mir r+ klappt es!

                  Kommentar

                  Lädt...
                  X