"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

C++ selbst geschriebener Editor

Killingspree 23.02.2008 - 22:24 2193 13
Posts

Killingspree

Bloody Newbie
Registered: Feb 2008
Location: Austria
Posts: 7
Hey Leute;
ich bin jetzt schon relativ weit mit meinem C++ Editor, er kann schon Text erstellen und speichern bzw. Laden. was ich jetzt allerdings noch suche ist eine Möglichkeit, den geladenen Text zu bearbeiten und danach wieder zu speichern..
Wäre sehr nett wenn ihr mir helfen könntet...

Danke

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Was ist jetzt die Frage?

repi

Addicted
Avatar
Registered: Jan 2004
Location: Sollenau
Posts: 508
Zitat von Killingspree
was ich jetzt allerdings noch suche ist eine Möglichkeit, den geladenen Text zu bearbeiten und danach wieder zu speichern..
Danke
das evtl.?

Killingspree

Bloody Newbie
Registered: Feb 2008
Location: Austria
Posts: 7
Richtig, aber damits offiziell dasteht;):
Meine Frage wäre jetzt: Wie kann ich einen geladenen Text bearbeiten und danach wieder speichern?
Bearbeitet von Killingspree am 23.02.2008, 22:55

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Deine Frage ergibt noch immer keinen Sinn.

Du hast also einen Editor geschrieben, mit dem man einen Text erstellen, speichern und laden kann.

Wo ist jetzt genau dein Problem, die Funktionen in der anderen Reihenfolge aufzurufen? Welche Art von Hilfe erwartest du von uns bei einem Problem, das einige 1000 Codezeilen umfasst?

Poste mal deinen Sourcecode und konkrete Fragen dazu.

quilty

Ich schau nur
Avatar
Registered: Jul 2005
Location: 4202
Posts: 3021
Wär mal interessant zu erfahren in welcher Form du den Text lädst, wie du ihn im Speicher hältst und ob du überhaupt schon den Cursor positionieren kannst ...

quilty

Hansmaulwurf

u wot m8?
Avatar
Registered: Apr 2005
Location: VBG
Posts: 5639
Zumindest sollte man wissen, in welcher Form du speicherst, damit es einen Sinn hat, zu fragen wie man es dann wieder aufrufen kann..
Wär aber sehr interresant, wenn du den Code hier posten könntest =)

Killingspree

Bloody Newbie
Registered: Feb 2008
Location: Austria
Posts: 7
Also danke schonmal für die Hilfe..
Es ist ein äußerst einfacher Editor ohne GUI...

Also hier der Source code:
Code:
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string>
using namespace std;
char Pfad[100];
char Text[10000];
int SL;



int main(){
    int Zahl1;
    cout << ("|---------------------------------------------------------|\n");// Willkommensscreen Anfang
    cout << ("|-----------------------Willkommen------------------------|\n");
    cout << ("|--------------------------beim---------------------------|\n");
    cout << ("|-----------------------einfachsten-----------------------|\n");
    cout << ("|------------------------Texteditor-----------------------|\n");
    cout << ("|-------------------------der Welt------------------------|\n");
    cout << ("|-----------------------------------(c) by Killingspree---|\n\n\n"); //Willkommensscreen Ende
    cout << ("Willst du eine Datei \n[1]Erstellen und Speichern\noder\n[2]Laden\n\n");
    cin >> Zahl1;
    cin.clear(); //damit nicht durchgelaufen wird
    cin.ignore(256, '\n'); 
    cout << "Enter druecken" << endl; 
    cin.get();  
    if(Zahl1==1){
              
         cout <<("Gib bitte ein wo die Datei gespeichert werden soll. z.B. C:/Windows/text.txt\n");
         cin.getline(Pfad,sizeof(Pfad)); //Pfadabfrage
         cout <<("Pfad erfolgreich eingelesen!\nBitte gib jetzt deinen text ein.\n");
         cin.getline(Text,sizeof(Text)); //Textabfrage
         cout <<("Texterfolgreich eingelesen, bitte warten waehrend er gespeichert wird...\n");
         ofstream dateiausgabe; //----Dateispeicherprozess Anfang
         dateiausgabe.open(Pfad); 
         dateiausgabe << Text << endl;
         dateiausgabe.close();//Dateispeicherprozess Ende
         cout << ("Erfolgreich gespeichert, vielen Dank fuer das benutzen dieses Programms.\n\n\n\n");
         }
    else{
         if (Zahl1==2);{
         cout << ("Gib den Pfad der zu oeffnenden Datei ein. z.B. C:/Windows/Text.txt\n\n");
         cin.getline(Pfad,sizeof(Pfad));
         cout << ("Pfad erfolgreich eingelesen!\nBitte warte waehrend die Datei geoeffnet wird...\n\n");
         ifstream in(Pfad);
         string line;
         
         while(getline(in,line)) cout << line << endl;
         }
         
}
         
    
system("PAUSE");
}

Wie könnt ich jetzt den in "line" eingelesenen Text bearbeiten....

pong

Addicted
Avatar
Registered: Oct 2001
Location: Wien (ned im Kra..
Posts: 414
Das ist kein Editor das ist eine simple Ein/Ausgabe

Ich würde mir an deiner Stelle mal allg. Programmiergrundlagen aneignen

pong

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von Killingspree
Wie könnt ich jetzt den in "line" eingelesenen Text bearbeiten....

Kommt drauf an was du vorhast. Soll man irgendwann mehr als eine Zeile eingeben können? Willst du ein GUI oder Textmodus? Reicht es, einzelne Zeilen editieren zu können, oder willst du mit dem Cursor rauf und runterfahren können?

Mit dem Sprachumfang von Standard-C++ kann man leider überhaupt keinen Editor programmieren, weil man dazu zumindest den Cursor am Bildschirm positionieren können muss - und das gibts im Standard nicht, weil es auf jeder Plattform anders funktioniert (bzw. manche Plattformen nichtmal einen Bildschirm oder einen Cursor haben). Du brauchst also eine Library, die derartige Funktionen zur Verfügung stellt. Damit ergibt sich die erste wichtige Frage: Auf welcher Plattform soll das Ding laufen, und welchen Compiler verwendest du?

Erwarte nicht, dass ein einfacher Fullscreen-Editor im Textmodus unter 500 Zeilen kommt, wenn du alles selbst programmieren willst. Du könntest dir natürlich auch eine Library suchen, die einen fertigen Editor eingebaut hat, dann musst du nur mehr das Menü und das Dateihandling rundherum schreiben. Ist aber auch nicht einfach.

Killingspree

Bloody Newbie
Registered: Feb 2008
Location: Austria
Posts: 7
@pong: Danke für die aufbauenden Worte -.-
@that: Ich will keine GUI, das ist mir echt noch etwas zu happig. Am besten wäre es wenn man den gesamten eingelesenen Text editieren könnte..
Es soll unter Windows laufen und Dev C++ ist mein Compiler...
Wo könnte ich eine solche Library finden?...

Vielen Dank schonmal das du mich nicht gleich als noob abgestempelt hast =D

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von Killingspree
Es soll unter Windows laufen und Dev C++ ist mein Compiler...
Wo könnte ich eine solche Library finden?...

Zum Beispiel im Windows-API:
http://msdn2.microsoft.com/en-us/library/ms682073.aspx

Um die Funktionen aufrufen zu können, brauchst du ein #include <windows.h> - das sollte bei MinGW dabei sein. Den Cursor positioniert man dann mit der Funktion SetConsoleCursorPosition. Die hat leider etwas unhandliche Parameter, also solltest du das in eine Funktion packen, z.B. so:

Code:
void GoToXY(short x, short y)
{
  COORD coord;
  coord.X = x;
  coord.Y = y;
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

gue

Addicted
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
Schau dir mal ncurses bzw. pdcurses an. Auf Wikipedia findet man Links zu Tutorials etc.

Übrigens hast du einen Fehler bei deinem if-else:
Lass das 2. if einfach weg, der Block wird sowieso ausgeführt (du hast danach einen Strichpunkt).

Killingspree

Bloody Newbie
Registered: Feb 2008
Location: Austria
Posts: 7
Okay danke schonmal, werd mich da jetzt ein bissal reinlesen, ich poste dann das ergebnis =D
Bearbeitet von Killingspree am 24.02.2008, 12:24
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz