C++ selbst geschriebener Editor

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_selbst_geschriebener_editor_192063/page_1 - zur Vollversion wechseln!


Killingspree schrieb am 23.02.2008 um 22:24

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 schrieb am 23.02.2008 um 22:28

Was ist jetzt die Frage?


repi schrieb am 23.02.2008 um 22:37

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 schrieb am 23.02.2008 um 22:49

Richtig, aber damits offiziell dasteht;):
Meine Frage wäre jetzt: Wie kann ich einen geladenen Text bearbeiten und danach wieder speichern?


that schrieb am 23.02.2008 um 22:58

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 schrieb am 23.02.2008 um 23:05

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 schrieb am 23.02.2008 um 23:37

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 schrieb am 24.02.2008 um 10:53

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 schrieb am 24.02.2008 um 11:17

Das ist kein Editor das ist eine simple Ein/Ausgabe

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

pong


that schrieb am 24.02.2008 um 11:23

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 schrieb am 24.02.2008 um 11:36

@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 schrieb am 24.02.2008 um 12:16

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 schrieb am 24.02.2008 um 12:17

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 schrieb am 24.02.2008 um 12:18

Okay danke schonmal, werd mich da jetzt ein bissal reinlesen, ich poste dann das ergebnis =D




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025