Seite 1 von 1

Datei in Konsole einlesen, dort bearbeiten und abspeichern

Verfasst: 03.06.2006 22:31
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

Verfasst: 03.06.2006 23:22
von Leonhard
Auf jedenfall aufwendiger, als in Windows zu Programmieren. wozu eigendlich in der Console?

Verfasst: 07.06.2006 21:29
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

Verfasst: 07.06.2006 21:35
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

Verfasst: 07.06.2006 22:41
von real
Ich möchte mal einen von Euch sehen, der ein EditorGadget in einer Konsolenanwendung nutzbar machen kann. :lol: :freak:

Verfasst: 07.06.2006 23:10
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?

Verfasst: 08.06.2006 03:33
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
  

Verfasst: 08.06.2006 10:00
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.