Datei in Konsole einlesen, dort bearbeiten und abspeichern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Datei in Konsole einlesen, dort bearbeiten und abspeichern

Beitrag von Zero_Cool »

Hallo Zusammen

Ich benötige einige kleine Tipps wie ich dieses Projekt am besten angehen soll. Ich würde gerne eine Datei ( Textdatei ) in meine Konsole einlesen, diese dort bearbeiten und danach den geänderten Text wieder abspeicher. Sozusagen ein ganz einfacher Editor einfach in einer Konsolenanwendung.

Wie gehe ich da am besten vor? Ist es aufwendig so ein Programm zu schreiben, kann es leider nicht genau abschätzen!

Danke + Gruss
Benutzeravatar
Leonhard
Beiträge: 602
Registriert: 01.03.2006 21:25

Beitrag von Leonhard »

Auf jedenfall aufwendiger, als in Windows zu Programmieren. wozu eigendlich in der Console?
Hannes
Beiträge: 16
Registriert: 30.05.2006 11:40
Wohnort: Schweiz

Beitrag von Hannes »

Am einfachsten ist es sicher mit dem EditorGadget. Allerdings ist dort die Anzahl Zeichen auf 32000 beschränkt.


Oder meinst Du einen Batch-Editor?

--Hannes
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Am einfachsten ist es sicher mit dem EditorGadget. Allerdings ist dort die
> Anzahl Zeichen auf 32000 beschränkt.

nope. Die Anzahl der Zeichen ist mit ein paar Tricks unbegrenzt:

http://www.purebasic.fr/german/viewtopic.php?t=6341

Grüße ... Kiffi
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Ich möchte mal einen von Euch sehen, der ein EditorGadget in einer Konsolenanwendung nutzbar machen kann. :lol: :freak:
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Beitrag von Zero_Cool »

Hi,

Nein, ich meine nicht direkt den Batch Editor! Ich würde einfach gerne meine Textfiles in der Konsole bearbeiten! Sozusagen mein eigener Editor!

:D Scheint aber nicht ganz so einfach zu sein, wie ich mir das gedacht habe!

Hm, 32000 Zeichen würden schon reichen! Ist dies mit Editor Gadget einfach zu realisieren?
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Zero_Cool hat geschrieben:Hi,

Nein, ich meine nicht direkt den Batch Editor! Ich würde einfach gerne meine Textfiles in der Konsole bearbeiten! Sozusagen mein eigener Editor!

:D Scheint aber nicht ganz so einfach zu sein, wie ich mir das gedacht habe!

Hm, 32000 Zeichen würden schon reichen! Ist dies mit Editor Gadget einfach zu realisieren?
Ein EditorGadget hat 32767 Zeichen, kann man aber sehr leicht
hochsetzen wenn man es braucht (kiffis link).

Einen kleinen Editor damit zu schreiben sollte auch fuer Anfaenger
leicht zu schaffen sein , was man bei einem ConsolenEditor nicht
sagen kann.


Beispiel : (Falls du ueberhaupt nichts mit Windows machen wolltest , auch nicht schlimm ;-) )

Code: Alles auswählen

  Declare Load()
  Declare SaveAs()
  Declare Save()
  Declare New()
  
  Global File.s   = "" 
  Define cx.l     = 640
  Define cy.l     = 480
  Define Style.l  = #WS_SYSMENU|#WS_MAXIMIZEBOX|#WS_MINIMIZEBOX|#WS_SIZEBOX
  Define hwnd.l   = OpenWindow(0,#PB_Ignore,#PB_Ignore,cx,cy,"Unbekannt",Style)
  
  SmartWindowRefresh(0,#true)
  CreateGadgetList(hwnd)
  
  hEdit = EditorGadget(0,0,0,cx,cy)
  
  If CreateMenu(0, hwnd)
    MenuTitle("Project")
    MenuItem(1, "New"    +Chr(9)+"Ctrl+O")
    MenuItem(2, "Open"   +Chr(9)+"Ctrl+O")
    MenuItem(3, "Save"   +Chr(9)+"Ctrl+S")
    MenuItem(4, "Save as"+Chr(9)+"Ctrl+A")
    MenuItem(5, "Close"  +Chr(9)+"Ctrl+C")
  EndIf
  
  Repeat
    uMsg = WaitWindowEvent()  
    
    If uMsg = #PB_Event_SizeWindow 
      ResizeGadget(0,0,0,WindowWidth(0),WindowHeight(0)-MenuHeight())
      Continue
    EndIf
    
    If uMsg = #PB_Event_Menu
      
      Select EventMenu()
        Case 1 ; new
          New()
        Case 2 ; open
          Load()
        Case 3 ; save 
          Save()
        Case 4 ; save as  
          SaveAs() 
        Case 5 
          End
      EndSelect
        
      Continue
    EndIf
    
  Until uMsg = #WM_CLOSE
  
  Procedure SaveAs()
    Protected Buffer.s = ""
    
    File = SaveFileRequester("",File,"Text (*.txt)|*.txt;*.ini|PureBasic (*.pb)|*.pb|Alle Dateien (*.*)|*.*",0)
    
    If File
      
      If FileSize(File) >= 0
        
        Select MessageRequester("Achtung !","Datei ueberschreiben ?",#PB_MessageRequester_YesNo)
          Case #PB_MessageRequester_No 
            ProcedureReturn
        EndSelect
        
      EndIf
      
      Buffer = GetGadgetText(0)
      
      IF CreateFile(0,File)
        WriteData(0,@Buffer,len(Buffer))
        CloseFile(0)
        SetWindowTitle(0,File)
      Else
        MessageRequester("Achtung","Datei konnte nicht gespeichert werden.")
        ProcedureReturn
      EndIf
      
    EndIf
    
  EndProcedure
  
  Procedure Save() 
    Protected Buffer.s = ""
    
    If File = ""
      SaveAs()
      ProcedureReturn
    EndIf
    
    Buffer = GetGadgetText(0)
    
    IF CreateFile(0,File)
      WriteData(0,@Buffer,len(Buffer))
      CloseFile(0)
    Else
      MessageRequester("Achtung","Datei konnte nicht gespeichert werden.")
      ProcedureReturn
    EndIf
    
  EndProcedure
  
  Procedure Load() 
    Protected Buffer.s = ""
    File = OpenFileRequester("","","Text (*.txt)|*.txt;*.ini|PureBasic (*.pb)|*.pb|Alle Dateien (*.*)|*.*",0)
    If File
      If ReadFile(0,File)
        Buffer = space(lof(0))
        ReadData(0,@Buffer,lof(0))
        CloseFile(0)
        SetGadgetText(0,Buffer)
        SetWindowTitle(0,File)
      EndIf
    EndIf
  EndProcedure
  
  Procedure New()
    File = ""
    SetGadgetText(0,"")
    SetWindowTitle(0,"Unbekannt")
  EndProcedure
  
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich hab mich mit konsolenanwendungen noch nicht so wirklich beschäftigt, aber...

gibt es da nen CLS-befehl?

einen rudimentären Editor from-the-scratch zu programmieren ist eigentlich in keiner oberfläche ein problem.
für den DX-screen fände ich es recht einfach, von daher wüsste ich nicht, wo bei der konsole die besondere schwierigkeit liegen soll.

ich bin halt von früher einfache oberflächen gewöhnt, der ganze windows-krempel fällt mir schwerer.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten