Seite 6 von 6
Re: Textfile *.txt Bearbeiten
Verfasst: 23.11.2010 18:35
von Velindos
Hallo Kiffi,
danke für die rasche Antwort. Werde mich gleich an die Sache machen. Liege ich richtig wenn ich den Vorschlag als Procedur aufbaue, um Ihn zum ImageToString und StringToImage verwenden kann.
Bin mir bei den Variablen noch nicht ganz klar. Auch beim Übernehmen des Bildes aus dem ImageGadget muss ich noch düfteln.
Liege ich richtig wenn ich jetzt zum Beispiel 255 Datensätze speichere/Lade, die Bilder in $Form zu verwalten und den Bildaufbau mit der enc/dec Prozedure erledige.
Werde mich jetzt hinsetzen und meine grauen Wölkchen anregen und gesagtes Umfzusetzen.
Gruss ... Velindos
Re: Textfile *.txt Bearbeiten
Verfasst: 23.11.2010 21:05
von Kiffi
Velindos hat geschrieben:Auch beim Übernehmen des Bildes aus dem ImageGadget muss ich noch düfteln.
Du willst ImageGadget-Bilder encoden? Wozu?
Grüße ... Kiffi
Re: Textfile *.txt Bearbeiten
Verfasst: 24.11.2010 10:31
von Velindos
Hallo,
die Sache ist die! Ich möchte Bilder und Texte in mein ImageGagdet(Drag&Drop) ziehen, das funktioniert, anschliessend will ich die Bilder+Texte unter ID verwalten. Hier kommt das Coden vor.
Ich stelle mir vor das ImageGadget zu String zu machen und mittels ImageString$(a) zu verwalten.
Nun habe ich dein Beispiel genommen und ein Bild eingelesen, mit deiner Routine zu Bildstring$ gemacht und in der Datei.txt gespeichert.
Anschliessend habe ich mit Laden die Datei(sprich nur die erste Zeile) einlesen wollen, hier meldet er plötzlich"Kann Datei nicht öffnen". Keine Ahnung, hilfe gesucht!!!
Code: Alles auswählen
Procedure Speichern()
;UTF-16LE mit Signatur (BOM) gespeichert.
anzahl=1 ;Für eine Zeile speichern
If CreateFile(1,DateiSpeichern$) ;[1]OpenFile(#PB_Any,"Daten.txt")
WriteStringFormat(1, #PB_Unicode)
For a=0 To anzahl
Speicher$ = Abbildung$+#TAB$+BildString$
WriteStringN(1,Speicher$, #PB_Unicode)
Debug "Datei wurde gespeichert"
Next
CloseFile(1)
;StatusBarText(0,0,"Daten erfolgreich gespeichert "+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
EndIf
EndProcedure
Procedure Laden
Code: Alles auswählen
Procedure Laden()
; Datei UTF-16LE mit Signatur (BOM) gespeichert.
Define Zeile.s
Define Usage
Define Quit
Define VVE
Global Dim Ausgabe.s(999)
Usage = ReadFile(#PB_Any, DateiLaden$) ; Pfad anpassen!
;Usage = ReadFile(#PB_Any, "c:\Datei0.txt") ; Pfad anpassen!
a=0
If Usage
ReadStringFormat(Usage)
While Not Eof(Usage) ; Wir öffnen die Datei pbtutorial.txt zum Lesen
;[1] Zeile=Str(a):Zeile = Zeile+" "
text$ = ReadString(Usage, #PB_Unicode); Wir lesen die Zeichen auf Zeile
Debug text$
Abbildung$= StringField(text$, 1, #TAB$) ;Abildung
ImageString$= StringField(text$, 2, #TAB$) ;Image
Debug Abbildung$
anzahl = a
a=a+1;zähler erhöhen
Wend
;[*] MessageRequester("Text","Text: "+Ausgabe(1),0) ; Nun zeigen wir die Zeichen an
CloseFile(Usage)
;StatusBarText(0,0,"Daten erfolgreich eingelesen"+FormatDate("%hh:%ii:%ss", Date()),#PB_StatusBar_Center )
; Wir schließen die Datei. Was jedoch nicht unbedingt
Else ; Wenn die Datei nicht gefunden wurde
MessageRequester("Fehler","Konnte die Datei nicht öffnen.",0) ; Fehlermeldung
EndIf
EndProcedure
Gruss ... Velindos
Re: Textfile *.txt Bearbeiten
Verfasst: 24.11.2010 10:49
von Velindos
Hallo,
noch ein Nachtrag zum Thema "EditorGadget". Wenn ich Text hereinziehe macht es keinen Zeilenumbruch sondern blendet einen Scroll-Balken ein. Geht es nicht das es mit einen Zeilenumbruch den Text darstellt und er Scrollbalken für die vertikale verwendet wird?
Gruss ... Velindos
Re: Textfile *.txt Bearbeiten
Verfasst: 24.11.2010 10:51
von Kiffi
Velindos hat geschrieben:Ich möchte Bilder und Texte in mein ImageGagdet(Drag&Drop) ziehen, das funktioniert, anschliessend will ich die Bilder+Texte unter ID verwalten.
das ist ziemlich umständlich. Erst lädst Du das Bild in das ImageGadget und
versuchst dann, das Bild dort wieder herauszuporkeln, um daraus einen
Base64-String zu basteln.
Wenn Du ein Bild in Dein ImageGadget droppst, dann hast Du ja bereits einen
Dateinamen, den Du dann der Encoder-Prozedur übergeben kannst.
Code: Alles auswählen
EnableExplicit
Procedure.s DateiZuBase64String(BildDatei.s)
Protected Dateikanal
Protected SpeicherPufferGroesse
Protected SpeicherPuffer
Protected Base64String.s
Dateikanal = ReadFile(#PB_Any, BildDatei)
If Dateikanal
SpeicherPufferGroesse = Lof(Dateikanal)
SpeicherPuffer = AllocateMemory(SpeicherPufferGroesse)
If SpeicherPuffer
ReadData(Dateikanal, SpeicherPuffer, SpeicherPufferGroesse)
Base64String = Space(SpeicherPufferGroesse * 2)
Base64Encoder(SpeicherPuffer, SpeicherPufferGroesse, @Base64String, StringByteLength(Base64String))
FreeMemory(SpeicherPuffer)
Else
Debug "!SpeicherPuffer"
EndIf
CloseFile(Dateikanal)
Else
Debug "!ReadFile"
EndIf
ProcedureReturn Base64String
EndProcedure
Define DateiAlsBase64String.s
DateiAlsBase64String = DateiZuBase64String([DateinameDesGedropptenBildes])
Grüße ... Kiffi
// Edit: Bzgl. des Problems in Deinem Nachtrag könnte
dieser Thread helfen
Re: Textfile *.txt Bearbeiten
Verfasst: 24.11.2010 13:44
von Velindos
Hallo,
Habe die Sache nicht richtig erklärt. Also, ich ziehe das Bild in das ImageGadget und lös ein Drop Ereignis aus. Funktioniert. Aber wie komme ich an das Bild wie unter DataSection [Image0]. Wenn ich [GadgetImage] nicht vorbelege jammert er.
Weiters möchte ich dann [Image0, Gadgetimage…….] über den Coder schicken und anschliessend speichern.
Code: Alles auswählen
Enumeration ; Images
#ImageGadget
#GadgetImage
EndEnumeration
;- Image Globals
Global Image0
Global GadgetImage
;- Catch Images
Image0 = CatchImage(0, ?Image0)
GadgetImage = CatchImage(1, ?GadgetImage)
;- Images
DataSection
Image0: IncludeBinary "C:\Versuch.bmp"
GadgetImage: IncludeBinary "C:\Velindos.bmp"
EndDataSection
ImageGadget(#ImageGadget,280, 42, 205, 155, ImageID(#ImageBild), #PB_Image_Border)
:::::::::
EnableGadgetDrop(#ImageGadget,#PB_Drop_Image,#PB_Drag_Copy)
Case #ImageGadget
If EventDropImage(#ImageGadget)
GadgetImage= ImageGadget(#ImageNummer,280, 42, 205, 155, ImageID(##ImageGadget), #PB_Image_Border)
2.Problem Zeilenumbruch habe ich was falsch verstanden?
Case #TargetNotiz
;EditorGadget(#TargetNotiz, 275, 290, 285, 95, EventDropText())
;AddGadgetItem(#myListIconGadget, -1, Zeile)
SendMessage_(#TargetNotiz, EventDropText(), #Null, #True) ;#True oder 1 für an, #False oder 0 für aus
AddGadgetItem(#TargetNotiz, -1, EventDropText())
Akt_Notiz$=EventDropText()
Gruss … Velindos
Re: Textfile *.txt Bearbeiten
Verfasst: 24.11.2010 19:53
von Vera
Hallo Velindos,
für den Zeilenumbruch hab' ich Dir mal ein kleines Beispiel gemacht.
Apropos: PB-Befehle als Flags ist auch eine interessante Idee - aber leider nicht implementiert
Code: Alles auswählen
Enumeration
#TargetNotiz
EndEnumeration
OpenWindow(0, 40, 110, 440, 280, "Drop and Wrap", #PB_Window_SystemMenu)
EditorGadget(#TargetNotiz, 10, 10, 420, 260)
EnableGadgetDrop(#TargetNotiz, #PB_Drop_Text, #PB_Drag_Copy)
AddGadgetItem(#TargetNotiz, 1, "drop text into Gadget- drop text into Gadget- drop text into Gadget- drop text into Gadget- drop text into Gadget- drop text into Gadget- ")
AddGadgetItem(#TargetNotiz, -1, "here:"+Chr(13))
Repeat
wwe = WaitWindowEvent()
Select wwe
Case #PB_Event_CloseWindow
Break
Case #PB_Event_GadgetDrop
If EventDropType() = #PB_Drop_Text
Select EventGadget()
Case #TargetNotiz
AddGadgetItem(#TargetNotiz, -1, EventDropText())
SendMessage_(GadgetID(#TargetNotiz), #EM_SETTARGETDEVICE, #Null, 0)
EndSelect
EndIf
EndSelect
Until wwe= #PB_Event_CloseWindow
cheers ~ Vera
Re: Textfile *.txt Bearbeiten
Verfasst: 24.11.2010 21:11
von Velindos
Hallo Vera,
habe gerade deinen Entwurf getest und sieht wirklich Gut aus, der Funkt. Werde Ihn morgen in mein Programm übernehmen und darüber Posten. Erstmal vielen Dank für dein Hilfe!!!
Habe jetzt nur noch das Problem mit meinen ImageGagdet, das ich das gedropte Bild einer Variable(Image0..etc) zuweise.
Gruss ... Velindos
Re: Textfile *.txt Bearbeiten
Verfasst: 19.12.2010 11:51
von Velindos
Hallo,
hab noch eine offene Frage. Da ich zur Zeit meine "installierte Software" über den CCleaner abfrage und eine Datei erstelle, würde mich interessieren ob es eine Möglichkeit in PB gibt, die "installierte Software" von Windows direkt über PB auszulesen?
Gruss ... Velindos