Dateiinhalte überschreiben

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #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

      Comment


      • #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));
        }

        Comment


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

          Comment


          • #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

            Comment


            • #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

              Comment


              • #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

                Comment


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

                  Comment

                  Working...