Avatar billede shj Nybegynder
26. september 1999 - 23:49 Der er 33 kommentarer og
1 løsning

sletpost skal kigges efter i denne kode "hjææææælp"

Jeg har nu prøvet at følge Bjarke´s forslag om at rykke resten af fil indholdet tilbage til startposition af den record jeg vil slette og overskrive den. Jeg tror jeg "måske er inde på noget af det rigtige, her er hele programmet,bare så evt. besvare kan få et indtryk af hvad jeg har behov for. Jeg ved godt at det er en gang rod, jeg vil bare have den til at fungere så kan jeg pudse den til bagefter.
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <string.h>
#include <iomanip.h>
#include <conio.h>
#include <stdio.h>
//---------------------------------------------------------------------------
//int index=0;
char navn[64];
  char efternavn[64];
  char adresse[64];
  char telefon[11];
  float gage = 0;
  char cprnr[11];


void inputdata(void);  //prototype
void soegdata(void);  //prototype
void menuitem(void);  //prototype
//klasse ansat
class ansat {
  public:
  ansat(char*,char*,char*,char*,float,char*);
  ansat(void);
  void visansat(void);
  void soeg(void);
  void sletindhold(void);
// private:
  char name[64];
  char sirname[64];
  char adresse[64];
  char telefon[11];
  float gage;
  char cprnr[11];
};
ansat::ansat(char *navn,char *efternavn,char *adresse,char *telefon,float gage,char *cpr)
{
  strcpy(ansat::name,navn);
  strcpy(ansat::sirname,efternavn);
  strcpy(ansat::adresse,adresse);
  strcpy(ansat::telefon,telefon);
  ansat::gage=gage;
  strcpy(ansat::cprnr,cpr);
}
void ansat::visansat(void)
{
  cout <<"medarbejder navn: "<<name<<" "<<sirname<<endl;
  cout <<"Adresse: "<<adresse<<endl;
  cout <<"Telefon: "<<telefon<<endl;
  cout <<"Gage: "  <<gage<<endl;
  cout <<"cpr nummer: "<<cprnr<<endl;
}
void inputdata(void)
{
char tast;
        cout<<"indtats personens fornavn: "<<endl;
        cin>>navn;
        cout<<"indtats personens efternavn: "<<endl;
        cin>>efternavn;

        cout<<"indtast Adresse"<<endl;
        cin>>adresse;
        cout<<setw(10)<<"evt telefon nr."<<endl;
        cin>>telefon;
        cout<<setw(10)<<"indtast gage"<<endl;
        cin>>gage;
        cout<<setw(10)<<"indtast person nr"<<endl;
        cin>>cprnr;
        ansat medarbejder(navn,efternavn,adresse,telefon,gage,cprnr);
        medarbejder.visansat();

        cout<<"vil du gemme disse oplysninger: (j/n)"<<endl;
        cin>>tast;
            if(tast=='j')
            {
            fstream ansatte;
            ansatte.open ("ansat.dat",ios::app);
              if(ansatte.fail())
              {
              cout <<"filen  kunne ikke aabnes"<<endl;
              }
              ansatte.write((char*)&medarbejder,sizeof(ansat));
              ansatte.close();
            }
    void menuitem();
}
void soegdata(void)
{
      char back;
            ansat medarbejder(navn,efternavn,adresse,telefon,gage,cprnr);
            ifstream search("ansat.dat",ios::in);
            if(!search)
            {
            cout<<"databasen findes ikke paa systemet"<<endl;
            menuitem();
            }
            cout <<"skriv navnet du vil soege efter: "<<endl;
            cin>>navn;

            while(!search.eof())
        {
              search.read((char*)&medarbejder, sizeof(ansat));
                if(strcmp(medarbejder.name, navn)==0)
          {
                  cout<<endl<<endl<<endl;
                  cout << "Resultat af din soegning"<<endl;

                  cout <<medarbejder.name<<endl;
                  cout <<medarbejder.sirname<<endl;
                  cout <<medarbejder.adresse<<endl;
                  cout <<medarbejder.telefon<<endl;
                  cout <<medarbejder.gage<<endl;
                  cout <<medarbejder.cprnr<<endl;
                  cout<<endl<<endl;
                  }

            }
            cout<<"tast e:  for exit"<<endl;
            cin>>back;
                  if(back=='e'){
                    menuitem();
                  }

  }




void sletdata(void)
{
    int start =0;
    int startpos =0;
    int indlaesfra=0;


    int i =0;

    char svar;
            ansat medarbejder(navn,efternavn,adresse,telefon,gage,cprnr);
            fstream sletpost("ansat.dat",ios::in|ios::out);
            cout <<"skriv navnet paa den person der skal slettes: "<<endl;
            cin>>navn;

          while(!sletpost.eof())
        {
              sletpost.read((char*)&medarbejder, sizeof(ansat));
                if(strcmp(medarbejder.name, navn)==0)
          {
                  cout<<endl<<endl<<endl;

                  cout <<medarbejder.name<<endl;
                  cout <<medarbejder.sirname<<endl;
                  cout <<medarbejder.adresse<<endl;
                  cout <<medarbejder.telefon<<endl;
                  cout <<medarbejder.gage<<endl;
                  cout <<medarbejder.cprnr<<endl;
                  cout<<endl<<endl;
                  cout<<"Vil du slette denne person (j/n): "<<endl;
                  start= sizeof(ansat);
                  indlaesfra=sletpost.tellg();
                  sletpost.close();
                  break;
                  }
            }
          cin>>svar;
          if(svar=='j')
          {
            //indeholder start position "start pos"
              startpos=indlaesfra-start;

              //sletpost.close();
                // sletpost.seekg(indlaesfra,ios::beg);
                        int i=0,y=0;
                    //udskriver det der skal gen/overskrives fra startpos
                        ifstream talr("ansat.dat",ios::in);
                        talr.seekg(startpos,ios::beg);
                        fstream tmplaes("ansat.dat",ios::in|ios::out);
                        fstream tmpskriv("ansat.dat",ios::in|ios::out);
                        tmpskriv.seekg(indlaesfra,ios::beg);
                        tmplaes.seekg(startpos,ios::beg);
                        while(!talr.eof())
                        {
                            talr.read((char*)&medarbejder, sizeof(ansat));

                            i++;
                        }

                          for(y=0;y<=i;y++)
                          {
                          tmplaes.read((char*)&medarbejder, sizeof(ansat));
                          tmpskriv.write((char*)&medarbejder,sizeof(ansat));
                          tmpskriv.seekg(indlaesfra,ios::beg);
                            indlaesfra=indlaesfra + start;
                          }
          }
      menuitem();

}






void menuitem(void)
{
  int valg;
    cout <<setw(25)<<"Mit person program"<<endl;
    cout<<endl;
    cout<<"hvad vil du fortage dig tast 1 eller 2 eller 3"<<endl<<endl;
    cout <<"1 Indtaste ny person i registret"<<endl;
    cout <<"2 find en person i registret"<<endl;
    cout <<"3 Slette en person fra registret"<<endl;
    cout <<"4 exit: "<<endl;
    cin>>valg;

      switch (valg){
        case 1:
        {
        inputdata();
        break;
        }
        case 2:
        {
        soegdata();
        break;
        }
        case 3:
        {
        sletdata();
        break;
        }
        case 4:
        abort();
      break;



    default:
    break;
  }
}
void main(void)
{
  menuitem();

}
Avatar billede bjarke Nybegynder
27. september 1999 - 08:18 #1
Først lige et par idéer til programmet. Jeg kan altså ikke lade være;-)

1) Ikke nogen kritik, men det er lidt morsomt, at du blander dansk og engelsk (name, sirname, telefon osv).
2) Jeg vil anbefale, at du flytter din switch-case sætning ned i main, for hvordan et program er bygget op, bør fremgå af main. I dit tilfælde, har du sådan set bare flyttet alt indholdet fra main og over i menuitem!
3) Hvis du lægger det hele ind i en do-while løkke, så kan brugeren selv vælge, hvornår han/hun vil stoppe.
4) Alle de løse variable du har i starten (navn, efternavn, osv) bør du lave om til en struct. Det gør det også langt pænere, når du overfører parametrene til en funktion/metode, da der så bliver kun én parameter i stedet for 6 + at så kan man se at de hører sammen.
Avatar billede bjarke Nybegynder
27. september 1999 - 08:48 #2
Følgende er efter bedste overbevisning, da jeg ikke har nogen compiler/c-editor ved hånden (dvs, at det heller ikke er testet):

// fra din if-statement:
if(svar=='j')  // if( tolower(svar)=='j' ), så kan man også bruge stort j - kræver ctype.h

startpos=indlaesfra-start;

while( !sletpost.eof() )
{
sletpost.seekg(ios::beg, startpos+start);
sletpost.read((char*)&medarbejder, sizeof(ansat));

sletpost.seekp(ios::beg, startpos);
sletpost.write((char*)&medarbejder,sizeof(ansat));

startpos += start;
}
// Her skal filen trunkeres (ved startpos), jeg kan desværre ikke lige huske i hovedet hvordan det gøres

menuitem();
}


Håber, at det er nogenlunde rigtigt, og ikke mindst at det virker. God fornøjelse! (i alle tilfælde er det da noget simplere ikke? :-)
Avatar billede shj Nybegynder
27. september 1999 - 12:12 #3
Hej ! Det virker ikke, jeg har forsøgt at
indsætte linien
sletpost.seekp(startpos,ios::beg|ios::trunc);
, men når jeg vil slette en post går den i et endeløst loop.
Nogen der har et bud :-)
Avatar billede bjarke Nybegynder
27. september 1999 - 12:18 #4
Prøv at ændre til:

do
....
while( strlen(medarbejder.name)!=0 );  // eller !=EOF måske?

Det er altså lidt svært det her uden mit TC!
Avatar billede bjarke Nybegynder
27. september 1999 - 12:23 #5
Jeg tror, at fstream_object.eof() går på indlæsning. Så du kan måske også lave en lille dummy (selvom det ikke er særlig smart):

char dummy;
do
{
...
sletpost >> dummy;
}
while( !sletpost.eof() );

Det er bare et gæt. Prøv ellers, at udskrive posterne til skærmen i løkken (evt med en getch-pause, så du kan følge med). Det kan være med til at fortælle dig, hvor det går galt. Du kan også debugge programmet (har du nogensinde prøvet det?).
Avatar billede bjarke Nybegynder
27. september 1999 - 14:47 #6
Nå,hvordan går det simon? Er din computer gået helt i baglås?

Og hvad med dig soepro, hvad laver du i dag?????
Avatar billede shj Nybegynder
27. september 1999 - 14:52 #7
Hej igen, ja jeg har prøvet at debugge, jeg fandt også fejlen vedr. endeløst loop, men det virker sgu desværre ikke endnu, det er lige som om de forskellige file open metoder måske kludrer hinanden sammen. kunne man oprette to nye fil objekter og bruge dem inde i sin while(!sletpost.eof())
Avatar billede bjarke Nybegynder
27. september 1999 - 14:57 #8
De forskellige file open metoder??? Ifølge min løsning, så åbner du én (sletpost) én gang og lukker den én gang.

Mit forslag skal erstatte hele metoden fra og med "cin>>svar". Det betyder selvfølgelig, at sletpost.close() cirka 4 linier ovenfor skal slettes. Men hvordan ser din metode i grunden ud nu?
Avatar billede bjarke Nybegynder
27. september 1999 - 15:01 #9
Du behøver ikke mere end et fstream-object, men det er selvfølgelig smag og behag (og måske mere overskueligt) om man ønsker to objeker - et som benyttes til at læse og et som benyttes til at skrive - eller et som klarer det hele ;)
Avatar billede shj Nybegynder
27. september 1999 - 15:11 #10
Hej ! jeg har her min nuværende funktioen som du forslog, men med lidt ændringer da jeg selfølgelig har prøvet en hel del frem og tilbage. Når en fil skal trunkeres betyder det ikke bare at den skal åbnes i trunc mode så den kan overskrives?
void sletdata(void)
{
    int start =0;
    int startpos =0;
    int indlaesfra=0;


    int i =0;

    char svar;
            ansat medarbejder(navn,efternavn,adresse,telefon,gage,cprnr);
            fstream sletpost("ansat.dat",ios::in|ios::out);
            cout <<"skriv navnet paa den person der skal slettes: "<<endl;
            cin>>navn;

          while(!sletpost.eof())
        {
              sletpost.read((char*)&medarbejder, sizeof(ansat));
                if(strcmp(medarbejder.name, navn)==0)
          {
                  cout<<endl<<endl<<endl;

                  cout <<medarbejder.name<<endl;
                  cout <<medarbejder.sirname<<endl;
                  cout <<medarbejder.adresse<<endl;
                  cout <<medarbejder.telefon<<endl;
                  cout <<medarbejder.gage<<endl;
                  cout <<medarbejder.cprnr<<endl;
                  cout<<endl<<endl;
                  cout<<"Vil du slette denne person (j/n): "<<endl;
                  start= sizeof(ansat);
                  indlaesfra=sletpost.tellg();
                  break;
                  }
            }
          cin>>svar;

        if( tolower(svar)=='j' )// så kan man også bruge stort j - kræver ctype.h


startpos=indlaesfra-start;
sletpost.seekp(startpos,ios::beg|ios::trunc);
while( !sletpost.eof() )
{
sletpost.seekg(ios::beg, indlaesfra+start);
sletpost.read((char*)&medarbejder, sizeof(ansat));

sletpost.seekp(ios::beg, startpos);
sletpost.write((char*)&medarbejder,sizeof(ansat));

indlaesfra += start;
}
// Her skal filen trunkeres (ved startpos), jeg kan desværre ikke lige huske i hovedet hvordan det gøres

menuitem();
}
Avatar billede bjarke Nybegynder
27. september 1999 - 15:25 #11
sletpost.seekp(startpos, ios::beg|ios::trunc). Giver ingen mening i mit hovede. Fjern |ios::trunc. Den skal vel bare skrive startpos bytes fra begyndelsen af filen ikke(?) I øvrigt betyder den ingenting (du opnår måske højst at slette din fil med trunc-kommandoen), da du set'er put-pointeren en gang til inden du bruger den, så SLET DEN!

Undskyld, der skulle selvfølgelig i den første linie i while stå:
sletpost.seekg(ios::beg, startpos+start), og ikke indlaesfra+start!!!

Og så skal du finde ud af om det skal være "ios::beg, offset" eller "offset, ios::beg", du gør det forskelligt nogle steder, dvs. at nogle af stederne må det være forkert (jeg har bare skrevet det, for jeg kan ikke checke syntaksen her på arbejde).

Som sagt, så er det svært uden compileren, så kontroller for en sikkerheds skyld det jeg skriver.
Avatar billede bjarke Nybegynder
27. september 1999 - 15:26 #12
Og så skal der selvfølgelig også stå: "startpos += start" i stedet for "indlaesfra += start"
Avatar billede shj Nybegynder
27. september 1999 - 15:43 #13
Hvad laver du egentligt til dagligt Bjarke?
Avatar billede shj Nybegynder
27. september 1999 - 15:44 #14
jeg er bare nysgerrig :-)
Avatar billede bjarke Nybegynder
27. september 1999 - 15:51 #15
Jeg læser til maskiningeniør, men er lige nu i praktik hos Novo Nordisk Engineering A/S :)

Hvis du har flere spørgsmål for i dag, så må du fyre dem af inden for 5 min (jeg vil hjem ;-)

Hvad laver du forresten selv?
Avatar billede shj Nybegynder
27. september 1999 - 15:57 #16
Hej arbejder som IT-Operatør, men skal starte som system engineer, hos Danka Services int. Den 1 Nov. Jeg arbejder primært med unix, Open Vms, og Open VME
Er uddannet Informatik assistent og læser datmatiker fjernundervisning, derfor de mange spørgsmål :-)
Hilsen Simon
Avatar billede bjarke Nybegynder
27. september 1999 - 16:01 #17
Aha, det forklarer jo en del, så er du jo også en hård negl :)

Anyway, god fornøjelse med dit program, jeg er tilbage i morgen :)
Avatar billede bjarke Nybegynder
28. september 1999 - 08:09 #18
Øv, jeg kiggede (lidt) på dit program i går aftes, men fik det ikke helt til at køre. Der gik lang tid inden jeg opdagede, at jeg havde glemt at slette linien sletpost.close() :-(

Det mest irriterende er, at jeg faktisk ikke fik det helt til at virke. MEN, jeg har lavet lidt småændringer i programmet og så vidt jeg kan se, kan det godt slette en person (men vist nok ikke den sidste i listen). Problemet er bare at få filen kortet en post af, når alle poster er rykket en plads tilbage (det har jeg faktisk aldrig prøvet og jeg ved ikke lige hvad kommandoen er - jeg forsøgte med "sletpost << EOF;" men det virkede vist ikke).

Men du kan se hvor langt du kan komme herfra:

#include <fstream.h>
#include <stdlib.h>
#include <string.h>
#include <iomanip.h>
#include <conio.h>
#include <ctype.h>  // for tolower()

//---------------------------------------------------------------------------

    char navn[64];
    char efternavn[64];
    char adresse[64];
    char telefon[11];
    float gage = 0;
    char cprnr[11];


void inputdata(void);  //prototype
void soegdata(void);  //prototype
void menuitem(void);  //prototype

class ansat
{
  public:
  ansat(char*,char*,char*,char*,float,char*);
  ansat(void);
  void visansat(void);
  void soeg(void);
  void sletindhold(void);
// private:
  char name[64];
  char sirname[64];
  char adresse[64];
  char telefon[11];
  float gage;
  char cprnr[11];
};
ansat::ansat(char *navn,char *efternavn,char *adresse,char *telefon,float gage,char *cpr)
{
    strcpy(ansat::name,navn);
    strcpy(ansat::sirname,efternavn);
    strcpy(ansat::adresse,adresse);
    strcpy(ansat::telefon,telefon);
    ansat::gage=gage;
    strcpy(ansat::cprnr,cpr);
}
void ansat::visansat(void)
{
    cout <<"medarbejder navn: "<<name<<" "<<sirname<<endl;
    cout <<"Adresse: "<<adresse<<endl;
    cout <<"Telefon: "<<telefon<<endl;
    cout <<"Gage: "  <<gage<<endl;
    cout <<"cpr nummer: "<<cprnr<<endl;
}


void inputdata(void)
{
char tast;
          cout<<"indtats personens fornavn: "<<endl;
          cin>>navn;
          cout<<"indtats personens efternavn: "<<endl;
          cin>>efternavn;

          cout<<"indtast Adresse"<<endl;
          cin>>adresse;
          cout<<setw(10)<<"evt telefon nr."<<endl;
          cin>>telefon;
          cout<<setw(10)<<"indtast gage"<<endl;
          cin>>gage;
          cout<<setw(10)<<"indtast person nr"<<endl;
          cin>>cprnr;
          ansat medarbejder(navn,efternavn,adresse,telefon,gage,cprnr);
          medarbejder.visansat();

          cout<<"vil du gemme disse oplysninger: (j/n)"<<endl;
            cin>>tast;
                if(tast=='j')
                {
                fstream ansatte;
                ansatte.open ("ansat.dat",ios::app);
                  if(ansatte.fail())
                  {
                    cout <<"filen  kunne ikke aabnes"<<endl;
                  }
                  ansatte.write((char*)&medarbejder,sizeof(ansat));
                  ansatte.close();
                }
}


void soegdata(void)
{
        char back;
                ansat medarbejder(navn,efternavn,adresse,telefon,gage,cprnr);
                ifstream search("ansat.dat",ios::in);
                if(!search)
                {
                cout<<"databasen findes ikke paa systemet"<<endl;
                menuitem();
                }
                cout <<"skriv navnet du vil soege efter: "<<endl;
                cin>>navn;

                while(!search.eof())
          {
                  search.read((char*)&medarbejder, sizeof(ansat));
                      if(strcmp(medarbejder.name, navn)==0)
            {
                        cout<<endl<<endl<<endl;
                        cout << "Resultat af din soegning"<<endl;

                        cout <<medarbejder.name<<endl;
                        cout <<medarbejder.sirname<<endl;
                        cout <<medarbejder.adresse<<endl;
                        cout <<medarbejder.telefon<<endl;
                        cout <<medarbejder.gage<<endl;
                        cout <<medarbejder.cprnr<<endl;
                        cout<<endl<<endl;
                        }

                }
//                cout<<"Tryk en tast for at forts‘tte...";
    }




void sletdata(void)
{
      int start =0;
      int startpos =0;
      int indlaesfra=0;

      char svar;
                ansat medarbejder(navn,efternavn,adresse,telefon,gage,cprnr);
                fstream sletpost("ansat.dat", ios::in|ios::out);
                cout <<"skriv navnet paa den person der skal slettes: "<<endl;
                cin>>navn;

              while(!sletpost.eof())
          {
                indlaesfra=sletpost.tellg();
                  sletpost.read((char*)&medarbejder, sizeof(ansat));
                      if(strcmp(medarbejder.name, navn)==0)
            {
                        cout<<endl<<endl<<endl;

                        cout <<medarbejder.name<<endl;
                        cout <<medarbejder.sirname<<endl;
                        cout <<medarbejder.adresse<<endl;
                        cout <<medarbejder.telefon<<endl;
                        cout <<medarbejder.gage<<endl;
                        cout <<medarbejder.cprnr<<endl;
                        cout<<endl<<endl;
                        cout<<"Vil du slette denne person (j/n): "<<endl;
                        start= sizeof(ansat);
                        break;
                        }
                }
cin>>svar;
if( tolower(svar)=='j' )
{
      startpos=indlaesfra;

      while( !sletpost.eof() )
      {
        sletpost.seekg(startpos+start);
        sletpost.read((char*)&medarbejder, sizeof(ansat));

        if( sletpost.eof() ) break;

        sletpost.seekp(startpos);
        sletpost.write((char*)&medarbejder,sizeof(ansat));

        startpos += start;
      }
}
// Her skal filen trunkeres!!!!!!
sletpost.close();
}






void menuitem(void)
{
      cout <<setw(25)<<"Mit person program"<<endl;
      cout<<endl;
      cout<<"hvad vil du fortage dig tast 1 eller 2 eller 3"<<endl<<endl;
      cout <<"1 Indtaste ny person i registret"<<endl;
      cout <<"2 find en person i registret"<<endl;
      cout <<"3 Slette en person fra registret"<<endl;
      cout <<"4 exit"<< endl << endl;
      cout << "->";
}


void main(void)
{
    int valg;

    do
    {
        menuitem();
            cin>>valg;
            switch ( valg ){
              case 1:
              {
                inputdata();
                break;
              }
              case 2:
              {
              soegdata();
              break;
              }
              case 3:
              {
              sletdata();
              break;
              }
              case 4:
              return;

              default:
              break;
          }
    cout << "Vil du forts‘tte (j/n) ?";
    }
    while( tolower(getch())=='j');
}
Avatar billede bjarke Nybegynder
28. september 1999 - 10:46 #19
Hej Simon - virker det ikke (bortset fra, at den sidste post i filen ikke bliver slettet, når de andre er flyttet)? Lige den detalje kan jeg ikke hjælpe med, for jeg har aldrig brugt den og funktionen findes ikke i min hjælp derhjemme :-( Men resten, er det ikke ok?
Avatar billede shj Nybegynder
28. september 1999 - 14:54 #20
Hej Bjarke har været ude på min ny arbejdsplads hele dagen derfor har jeg ikke pt. kigget det, men jeg har lige prøvet og det ser indtil videre ud til at virke, hmmmm vender tilbage når jeg har studeret det lidt grundigere
med mange c++ Hilsner
Simon
Avatar billede shj Nybegynder
28. september 1999 - 14:56 #21
de 300 skal du nok få, bjeg vil barwe lige holde spørgsmålet åben lidt endnu for evt. kommentarer ik!
Avatar billede bjarke Nybegynder
28. september 1999 - 15:03 #22
"bjeg vil barwe" - det gik vist lidt hurtigt hva´;-)

Hvis du sender et eksemplar af dit program, som det ser ud cirka klokken 16.30 ( til mailto:d971230@student.dtu.dk ), så er det muligt, at jeg lige kan give det et kig til:-) Men jeg vil ikke love det.

Selvfølgelig må du holde spørgsmålet åbent, men det er jo lidt svært ikke at være lidt emsig med 300 points på højkant ;-)
Avatar billede bjarke Nybegynder
28. september 1999 - 15:36 #23
By the way! Hvis du sender programmet, sender du så ikke også beskrivelsen (fra hjælpen) af metoderne .eof() og .close() og hvis der er andet relevant? Så må vi se om jeg får tid (og kan finde ud af det) til at gøre noget ved det:-)
Avatar billede shj Nybegynder
28. september 1999 - 15:44 #24
Det lyder rigtig godt, jeg ´glæder mig faktisk også efterhånden til denne ogave er løst. Når det er sket vil jeg zippe sourcen til sletpost funktioenen og gemme den i en bankboks så jeg er sikker på at den aldrig forsvinder *LOL*
nej nej, men jeg glæder mig til qt se hvordan problemmet løses. vedr. trunc
af fil så har jeg desværre ikke rigtig nogen ideer
Avatar billede bjarke Nybegynder
28. september 1999 - 15:52 #25
Ja, og så kan du skrive: "Udført af Simon og Bjarke" ;-)

*LOL* ???

Hmm, skidt med det der trunc. Kan du ikke finde noget i forbindelse med ovennævnte metoder, hvis du roder lidt i hjælpen (husker du også at sende det med?)
Avatar billede shj Nybegynder
28. september 1999 - 15:54 #26
jep :-)
Avatar billede shj Nybegynder
29. september 1999 - 09:52 #27
Hej Bjarke! tusind tak for din hjælp, Jeg har valgt at aflevere opgaven til min lærer, han plejer at sende nogle vejledende løsninger, så den kan jeg jo så sende til dig, så vi kan få styr på det der med de filer  *G*
Avatar billede bjarke Nybegynder
29. september 1999 - 10:06 #28
Lyder godt, for den der trunc er jeg altså blevet ret træt af :-( Jeg beklager lidt, for jeg synes ikke, at min hjælp helt er til 300 points, men tak skal du have alligevel (til gengæld har jeg jo så kommenteret lidt på resten af programmet ik';-)

stadig: *LOL* ????
Avatar billede shj Nybegynder
29. september 1999 - 10:32 #29
Jeg kan altid bruge konstruktiv kritik, og jeg synes da virkelig din insats er 300 point værd, du har jo engageret dig i problemmet og  er jo også næsten nået frem til løsningen ik :-)
Avatar billede bjarke Nybegynder
30. september 1999 - 08:38 #30
Hej Simon

Se her hvad jeg fandt på en linux-maskine:

NAME

  truncate, ftruncate - Changes file length

SYNOPSIS

  #include <unistd.h>

  int truncate(
          const char *path,
          off_t length);

  int ftruncate(
          int filedes,
          off_t length);

God fornøjelse :)
Avatar billede soepro Nybegynder
06. oktober 1999 - 14:46 #31
shj >> "truncate" gør du som jeg tidligere har svaret til dig på denne opgave, ved at bruge chsize() kommandoen.
Avatar billede shj Nybegynder
06. oktober 1999 - 15:16 #32
Hej soepro, jeg har ikke modtaget en besvarelse fra dig i dette spørgsmål så jeg er ikke helt med påå hvad du mener?
men jeg vil da lige checke den funktioen
"chsize()"
Hilsen Simon
Avatar billede soepro Nybegynder
06. oktober 1999 - 15:46 #33
shj >> Det var ikke lige dette her spørgsmål - men et af de andre du har stillet omkring samme problem.
Avatar billede bjarke Nybegynder
06. oktober 1999 - 15:50 #34
soepro >> hyggeligt at du er tilbage igen - jeg var lige ved at tro, at du havde forladt os (måske opgivet konkurrencen;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester