Wenn man nicht aufgibt, kommt man irgendwann ans Ziel.
Und so will ich wenigstens meinen Lösungsweg offenlegen.
Code: Alles auswählen
Define.s mFTP, mPath, mFile
Procedure SendInitialize(vIP.s)
Protected pID.i
Shared mFTP, mPath, mFile
;fülle die Variablen die ich brauche
mFTP = vIP + ".ftp"
mPath = GetPathPart(ProgramFilename())
mFile = "SendFile.txt"
;Erstelle, sollte sie noch nicht vorhanden sein,
;die Datei mit dem FTP Code, die ich dann später
;über das RunProgramm als Parameter vorgebe
If (FileSize(mFTP)=#PB_Any)
pID = CreateFile(#PB_Any, mFTP)
If pID
WriteStringN(pID, "Open " + vIP, #PB_Ascii)
WriteStringN(pID, "put " + mPath + "\" + mFile, #PB_Ascii)
WriteStringN(pID, "disconnect", #PB_Ascii)
WriteStringN(pID, "quit", #PB_Ascii)
EndIf
CloseFile(pID)
EndIf
EndProcedure
Procedure.s ZebraPrinter(vBarCode.s, vText.s, vCount.s = "1")
Protected pPrintSeq.s
Define.i pH = 60, pW = 15
;/Nachrichtenstart
pPrintSeq.s = "^XA"
;/Nullposition auf dem Etikett
pPrintSeq + "^PON^LRN^LH000,000^FS"
;/Barcodedruck
If Not (vBarcode=#Null$)
pPrintSeq + "^FO020,16^BY2,3,55^B3,,,N^FD" + vBarCode + "^FS"
EndIf
;/Textzeilendruck
If Not (vText=#Null$)
If (vBarcode=#Null$)
pPrintSeq + "^FO020,20^ABO," + pH + "," + pW + "^FD" + vText + "^FS"
Else
pPrintSeq + "^FO020,75^ABN^FD" + vText + "^FS"
EndIf
EndIf
;/Etiketten Anzahl
pPrintSeq + "^PQ" + vCount + "^FS"
;/Nachrichtenende
pPrintSeq + "^XZ"
ProcedureReturn pPrintSeq
EndProcedure
Procedure.a EtikettSend(vBarcode.s, vText.s, vCount.i = 1)
Protected pOutputText.s
Define.i pFileID, pFtpID
Shared mSoloSetupData, mFTP, mPath, mFile
;Erstelle den Drucksequenz
pOutputText = ZebraPrinter(Barcode, Text)
;Erstelle eine Datei mit der Drucksequenz
If (pOutputText<>"")
pFileID = CreateFile(#PB_Any, mFile, #PB_Ascii)
If pFileID
WriteString(pFileID, pOutputText, #PB_Ascii)
CloseFile(pFileID)
;Führe das FTP-Programm aus
RunProgram("ftp.exe","-n -i -s:" + mFTP, mPath, #PB_Program_Wait)
;Lösche die Drucksequenzdatei
DeleteFile(mFile)
Else
MessageRequester("InfoBox: Error", "Die Daten konnten nicht gespeichert werden.", #MB_ICONERROR)
ProcedureReturn #False
EndIf
EndIf
Procedurereturn #True
EndProcedure
SendInitialize(IP-Adresse)
EtikettSend(Barcode, Text, Anzahl)